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, використовуючи такі прийоми:
- Version statement
- 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>