• Czas czytania ~1 min
  • 24.08.2022

Kontrola wersji API to pakiet od Reindert Vetter przeznaczony do eleganckiego zarządzania wersjami punktów końcowych API.

Ten pakiet zawiera plik konfiguracyjny, w którym definiujesz wydania i możliwości wersji.Później możesz użyć takich rzeczy, jak instrukcje wersji, aby określić możliwości określonych wersji Twojego interfejsu API:

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

Ten pakiet ma dwa sposoby zarządzania wersjami punktów końcowych interfejsu API, przy użyciu następujących technik:

  1. Version statement
  2. Version middleware

Instrukcje wersji zawierają klasy, które mieszają się z cechą VersionStatement.W ten sposób możesz określić, czy kod API ma być wykonywany bez sprawdzania konkretnej wersji API w całym kodzie:

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

Oto przykład ValidateZipCode z pliku README:

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

Oprogramowanie pośredniczące w wersji idzie o krok dalej, przetwarzając wszystkie żądania i odpowiedzi inne niż najnowsza wersja w oprogramowaniu pośredniczącym:

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; } }

Możesz dowiedzieć się więcej o tym pakiecie, uzyskać pełne instrukcje instalacji i wyświetlić kod źródłowy na GitHub.< /p>

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

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...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297