middlewares / method-override
通过X-Http-Method-Override头重写请求方法的中间件
v2.0.1
2020-12-02 00:06 UTC
Requires
- php: ^7.2 || ^8.0
- middlewares/utils: ^3.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.0
- laminas/laminas-diactoros: ^2.3
- oscarotero/php-cs-fixer-config: ^1.0
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^8|^9
- squizlabs/php_codesniffer: ^3.0
README
使用X-Http-Method-Override头重写请求方法的中间件。这对于无法发送GET和POST以外方法的客户端很有用。
要求
- PHP >= 7.2
- PSR-7 http库
- PSR-15中间件调度器
安装
此包可通过Composer安装和自动加载,名称为 middlewares/method-override。
composer require middlewares/method-override
示例
Dispatcher::run([ (new Middlewares\MethodOverride()) ->getMethods(['HEAD', 'CONNECT', 'TRACE', 'OPTIONS']) ->postMethods(['PATCH', 'PUT', 'DELETE', 'COPY', 'LOCK', 'UNLOCK']) ->queryParameter('method') ->parsedBodyParameter('method') ]);
用法
在构造函数中,您可以提供一个 Psr\Http\Message\ResponseFactoryInterface
来创建错误响应(405
)。如果未定义,则 Middleware\Utils\Factory 将自动检测它。
$responseFactory = new MyOwnResponseFactory(); $override = new Middlewares\MethodOverride($responseFactory);
getMethods
允许定义可以重写GET方法的方法。默认为 ['HEAD', 'CONNECT', 'TRACE', 'OPTIONS']
。
//The GET method can be overrided only with HEAD and CONNECT $override = (new Middlewares\MethodOverride())->getMethods(['HEAD', 'CONNECT']);
postMethods
包含可以重写POST方法的方法的数组。默认为 ['PATCH', 'PUT', 'DELETE', 'COPY', 'LOCK', 'UNLOCK']
。
//The POST method can be overrided only with DELETE and PUT $override = (new Middlewares\MethodOverride())->getMethods(['DELETE', 'PUT']);
queryParameter
允许在GET请求中使用查询参数,除了 X-Http-Method-Override
。例如 http://example.com/view/23?method=HEAD
//The method can be override with ?new_method=OPTIONS $override = (new Middlewares\MethodOverride())->queryParameter('new_method');
parsedBodyParameter
允许在POST中使用解析后的正文参数,除了 X-Http-Method-Override
。
有关最近更改的更多信息,请参阅CHANGELOG,有关贡献细节,请参阅CONTRIBUTING。
MIT许可证(MIT)。有关更多信息,请参阅LICENSE。