n1215/openapi-http-foundation-validator
0.2.0
2023-09-22 12:51 UTC
Requires
- php: >=8.1
- league/openapi-psr7-validator: ^0.21
- psr/cache: 1.0|^2.0|^3.0
- psr/simple-cache: ^1.0|^2.0|^3.0
- symfony/psr-http-message-bridge: ^2.3
Requires (Dev)
- nyholm/psr7: ^1.8
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.3
- squizlabs/php_codesniffer: ^3.7
- yiisoft/cache: ^3.0
README
为 Symfony http-foundation 开发的 OpenAPI(v3) 验证器,使用 league/openapi-psr7-validator
和 symfony/psr-http-message-bridge
。
要求
- PHP >= 8.1
安装
composer require n1215/openapi-http-foundation-validator
使用方法
1. 安装 PSR-17 HTTP 工厂实现。
- 您可以使用任何 PSR-17 HTTP 工厂实现。
- 例如:
nyholm/psr7
- 例如:
composer require nyholm/psr7
2. 创建 http 消息工厂
$psr17Factory = new \Nyholm\Psr7\Factory\Psr17Factory(); /** @var \Symfony\Bridge\PsrHttpMessage\HttpMessageFactoryInterface $httpMessageFactory */ $httpMessageFactory = new \Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory( serverRequestFactory: $psr17Factory, streamFactory: $psr17Factory, uploadedFileFactory: $psr17Factory, responseFactory: $psr17Factory );
3. 创建验证器构建器
- 构建器可以从 YAML 文件、YAML 字符串、JSON 文件或 JSON 字符串创建。
- 您可以使用 PSR-16 简单缓存代替 PSR-6 缓存。
示例1
/** @var \N1215\OpenApiValidation\HttpFoundation\ValidatorBuilder $validatorBuilder */ $validatorBuilder = (new \N1215\OpenApiValidation\HttpFoundation\ValidatorBuilder($psr17Factory)) ->fromYamlFile('/path/to/openapi.yaml') ->setCache(new YourPsr6Cache(), 86400);
示例2
/** @var \N1215\OpenApiValidation\HttpFoundation\ValidatorBuilder $validatorBuilder */ $validatorBuilder = (new \N1215\OpenApiValidation\HttpFoundation\ValidatorBuilder($psr17Factory)) ->fromJsonFile('/path/to/openapi.json') ->setSimpleCache(new YourPsr16Cache(), 3600);
4. 从构建器获取验证器
/** @var \N1215\OpenApiValidation\HttpFoundation\Validators $validators */ $validators = $validatorBuilder->getValidators();
5. 验证请求
/** @var \Symfony\Component\HttpFoundation\Request $request */ /** @var \N1215\OpenApiValidation\HttpFoundation\RequestValidatorInterface $requestValidator */ $requestValidator = $validators->getRequestValidator(); $requestValidator->validate($request);
6. 验证响应
/** @var \Symfony\Component\HttpFoundation\Response $response */ /** @var \N1215\OpenApiValidation\HttpFoundation\ResponseValidatorInterface $responseValidator */ $responseValidator = $validators->getResponseValidator(); $responseValidator->validate( new \N1215\OpenApiValidation\OperationAddress('/path', 'GET'), $response );