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 --helpJSON 스키마에 작동 부분을 생성합니다.
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 ()
{
}
}더 많은 예를 찾으십시오. 일부 앱