membrane/openapi-router

0.4.0 2024-04-17 14:06 UTC

This package is auto-updated.

Last update: 2024-09-17 15:06:03 UTC


README

此库将 HTTP 请求路由到 OpenAPI 规范中的 operationId。为了确保其运行速度快,我们使用了受 Nikita PopovNicolas Grekas 启发的技术。

要求

规则

命名约定

路由优先级

安装

composer require membrane/openapi-router

快速入门

要动态读取路由,可以执行以下操作

<?php

use Membrane\OpenAPIRouter\Reader\OpenAPIFileReader;use Membrane\OpenAPIRouter\RouteCollector;use Membrane\OpenAPIRouter\Router;

$openApi = (new OpenAPIFileReader())->readFromAbsoluteFilePath('/app/petstore.yaml');
$routeCollection = (new RouteCollector())->collect($openApi);

$router = new Router($routeCollection);
$requestedOperationId = $router->route('http://petstore.swagger.io/v1/pets', 'get');

echo $requestedOperationId; // listPets

缓存路由

运行以下控制台命令以从您的 OpenAPI 缓存路由,避免每次都读取您的 OpenAPI 文件

membrane:router:generate-routes <openapi-filepath> <destination-filepath>
<?php

use Membrane\OpenAPIRouter\Router;

$routeCollection = include '/app/cache/routes.php';

$router = new Router($routeCollection);
$requestedOperationId = $router->route('http://petstore.swagger.io/v1/pets', 'get');

echo $requestedOperationId; // listPets