• Час читання ~1 хв
  • 24.08.2022

API Version Control – це пакет від Reindert Vetter розроблено для елегантного керування версіями кінцевих точок API.

Цей пакет містить файл конфігурації, де ви визначаєте випуски та можливості версії.Пізніше ви зможете використовувати такі речі, як оператори версії, щоб визначити можливості певних версій вашого API:

'releases' => [
    'GET/orders' => [
        '<=1.0' => [
            PrepareParameterException::class,
        ],
    ],
    '(POST|PUT)/orders' => [
        '<=2.0' => [
            ThrowCustomException::class,
            ValidateZipCode::class,
        ],
        '<=1.0' => [
            PrepareParameterException::class,
        ],
    ],
],

Цей пакет має два способи керування версіями ваших кінцевих точок API, використовуючи такі прийоми:

  1. Version statement
  2. Version middleware

Інструкції версії включають класи, які змішуються в властивості VersionStatement.Таким чином, ви можете визначити, чи потрібно виконувати код API, не перевіряючи конкретну версію API скрізь у вашому коді:

// Instead of version checks everywhere...
if (RequestVersion::isAtLeast('2.0')) {
    // ...
}
 
// A VersionStatement class instead based on version
if (ValidateZipCode::permitted()) {
    // ...
}

Ось приклад ValidateZipCode клас із README:

namespace App\VersionControl\Orders;
 
use ReindertVetter\ApiVersionControl\Concerns\VersionStatement;
 
class ValidateZipCode
{
    use VersionStatement;
}

Проміжне програмне забезпечення версії робить крок далі, обробляючи всі запити та відповіді, відмінні від останньої версії проміжного програмного забезпечення:

use Closure; use Illuminate\Http\Request;   class PrepareParameterException { /** * @param $request * @param \Closure $next * @return mixed */ public function handle(Request $request, Closure $next) { // Set the default parameter because it is required in a newer version. $request->query->set('sort', 'DESC');   /** @var \Illuminate\Http\Response $response */ $response = $next($request);   return $response; } }

Ви можете дізнатися більше про цей пакет, отримати повні інструкції зі встановлення та переглянути вихідний код на GitHub.< /p>

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297