• Время чтения ~1 мин
  • 24.08.2022

Контроль версий API — это пакет 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