http router openapi
v2.2.0
composer require ' sunrise/http-router-openapi:^2.1 ' use Psr SimpleCache CacheInterface ;
use Sunrise Http Router OpenApi Object Info ;
use Sunrise Http Router OpenApi OpenApi ;
use Sunrise Http Router OpenApi RouteInterface ;
$ openapi = new OpenApi ( new Info ( ' Acme ' , ' 1.0.0 ' ));
// Passing PSR-16 cache to the openapi object:
/** @var CacheInterface $cache */
$ openapi -> setCache ( $ cache );
// Passing all routes to the openapi object:
/** @var RouteInterface[] $routes */
$ openapi -> addRoute (... $ routes );
// When using Sunrise Router:
/** @var SunriseHttpRouterRouter $router */
$ openapi -> addRoute (... $ router -> getRoutes ()); // Converting the openapi object to JSON document:
$ openapi -> toJson ();
// Converting the openapi object to YAML document:
$ openapi -> toYaml ();
// Converting the openapi object to an array:
$ openapi -> toArray ();將操作零件轉換為JSON模式。
$ openapi -> getRequestCookieJsonSchema ();
$ openapi -> getRequestHeaderJsonSchema ();
$ openapi -> getRequestQueryJsonSchema ();
$ openapi -> getRequestBodyJsonSchema ();
$ openapi -> getResponseBodyJsonSchema ();使用路由說明驗證請求。
use Sunrise Http Router OpenApi Middleware RequestValidationMiddleware ;
use Sunrise Http Router OpenApi OpenApi ;
/** @var OpenApi $openapi */
$ middleware = new RequestValidationMiddleware ( $ openapi );生成OpenAPI文檔。
use Sunrise Http Router OpenApi Command GenerateOpenapiDocumentCommand ;
use Sunrise Http Router OpenApi OpenApi ;
/** @var OpenApi $openapi */
$ command = new GenerateOpenapiDocumentCommand ( $ openapi );php bin/app router:generate-openapi-document --help生成JSON模式的操作部分。
use Sunrise Http Router OpenApi Command GenerateJsonSchemaCommand ;
use Sunrise Http Router OpenApi OpenApi ;
/** @var OpenApi $openapi */
$ command = new GenerateJsonSchemaCommand ( $ openapi );php bin/app router:generate-json-schema --help如果給定的響應主體與給定ID標識的操作描述不匹配,則斷言會失敗。
use PHPUnit Framework TestCase ;
use Psr Http Message ResponseInterface ;
use Sunrise Http Router OpenApi Test OpenapiTestKit ;
class SomeTest extends TestCase
{
use OpenapiTestKit;
public function testResponseBodyMatchesDescription () : void
{
// some logic to run a route...
/** @var ResponseInterface $response */
$ this -> assertResponseBodyMatchesDescription ( ' route.name ' , $ response );
}
} class SomeController
{
/**
* @OpenApiOperation(
* requestBody=@OpenApiRequestBody(
* content={
* "application/json": @OpenApiMediaType(
* schema=@OpenApiSchema(
* type="object",
* properties={
* "foo": @OpenApiSchema(
* type="string",
* ),
* },
* ),
* ),
* },
* ),
* responses={
* 200: @OpenApiResponse(
* description="Ok",
* ),
* },
* )
*/
public function someAction ()
{
}
}在這裡尋找更多示例:一些應用程序