benycode / slim-request-validation
基于Respect/Validation的HTTP请求验证的轻量级中间件
v1.4.8
2024-04-03 11:14 UTC
Requires
- php: ^7.4 || ^8.0
- benycode/slim-request-accept-header: ^1.0
- psr/http-message: ^1.0
- respect/validation: ^2.2
- slim/psr7: ^1.3
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.4.1
- php-di/php-di: ^6.3
- phpunit/phpunit: ^8.0 || ^9.0
- scrutinizer/ocular: ~1.1
- slim/http: ^1.2
- slim/slim: ~4.0
README
为Slim 4框架的请求验证库。它使用respect-validation库。
目录
安装
通过Composer
$ composer require benycode/slim-request-validation
需要Slim 4。
用法
创建一个规则类
use BenyCode\Slim\Validation\Rule\RequestValidationRuleInterface; use Respect\Validation\Validator; final class AnyRuleClass implements RequestValidationRuleInterface { public function rules(): array { return [ 'name' => Validator::alpha(), 'url' => Validator::filterVar(FILTER_VALIDATE_URL), ]; } public function messages(): array { return [ 'filterVar' => '{{name}} must be valid modified message.', ]; } }
向路由添加一个中间件
use BenyCode\Slim\Validation\Middleware\RequestValidationExceptionMiddleware; use BenyCode\Slim\Validation\Transformer\RequestValidatorTransformFactory; use BenyCode\Slim\Validation\Encoder\JsonEncoder; $app = new \Slim\App(); $app->post('/api/any_end_point',function ($req, $res, $args) { }) ->add(new RequestValidationExceptionMiddleware(new RequestValidatorTransformFactory(), new JsonEncoder())) ->add(new RequestValidation([ new AnyRuleClass(), ])) ; $app->run();
保持代码整洁并分割规则
use BenyCode\Slim\Validation\Middleware\RequestValidationExceptionMiddleware; use BenyCode\Slim\Validation\Transformer\RequestValidatorTransformFactory; use BenyCode\Slim\Validation\Encoder\JsonEncoder; $app = new \Slim\App(); $app->post('/api/any_end_point',function ($req, $res, $args) { }) ->add(new RequestValidationExceptionMiddleware(new RequestValidatorTransformFactory(), new JsonEncoder())) ->add(new RequestValidation([ new AnyRuleClass(), new AppendedRuleClass(), new AppendedRule2Class(), new AppendedRule3Class(), .... ])) ; $app->post('/api/any_end_point2',function ($req, $res, $args) { }) ->add(new RequestValidationExceptionMiddleware(new RequestValidatorTransformFactory(), new JsonEncoder())) ->add(new RequestValidation([ new AnyRuleClass(), new AppendedRule3Class(), .... ])) ; $app->run();