ptlis / psr7-conneg
PSR7 内容协商
v1.2.0
2015-06-16 17:14 UTC
Requires
- php: >=5.3.0
- psr/http-message: ~1.0
- ptlis/conneg: ~3.0
Requires (Dev)
- pdepend/pdepend: ~2.0
- phploc/phploc: ~2.0
- phpmd/phpmd: ~2.2
- phpunit/phpunit: ~4.5
- relay/relay: 1.*@dev
- sebastian/phpcpd: ~2.0
- squizlabs/php_codesniffer: ~2.0
- zendframework/zend-diactoros: ~1.0
- zendframework/zend-stratigility: ~1.0
Suggests
- relay/relay: To use the bundled Relay middleware.
- zendframework/zend-stratigility: To use the bundled stratigility middleware.
This package is auto-updated.
Last update: 2024-09-07 00:32:36 UTC
README
使用PSR-7接口的内容协商中间件。
可配置组件,用于将处理过的请求装饰为首选类型信息。
基于 ptlis/ConNeg 构建。
安装
可以通过控制台安装
$ composer require ptlis/psr7-conneg:~1.2
或者通过编辑 composer.json 文件
{ "require": { ... "ptlis/conneg-psr7-conneg": "~1.2", ... } }
然后执行 composer update
$ composer update
使用方法
该软件包包含一个用于协商的单个类。
use ptlis\Psr7ConNeg\Negotiator; $negotiator = new Negotiator();
要启用字段的协商,请使用适当的 with*
方法(注意这些方法以PSR-7接口的方式返回一个新实例)。
要协商首选MIME类型,请使用 withMime
方法,并为其提供应用程序类型偏好的列表
$negotiator = $negotiator->withMime('application/json;q=1.0,text/xml;q=0.7');
配置好协商器后,现在可以执行协商
$request = $negotiator->negotiate($request);
这将在请求中添加包含首选类型的属性。这些属性可以通过相应的getter访问,在上面的协商Accept字段的示例中,看起来是这样的
$mime = $newRequest->getAttribute(Negotiator::MIME_BEST);
如果请求的Accept字段包含 application/json,text/xml
,那么此查找返回的值将是 application/json
。
与 Zend-Stratigility 一起使用
要使用 zend-stratigility 组件,按照上述描述配置协商器实例,并将其传递给 Stratigility 协商器。
$stratigilityNegotiator = new StratigilityNegotiator($negotiator);
要协商所有路由,请使用空路由添加它
$app->pipe('', $stratigilityNegotiator);
有关更多信息,请参阅 Stratigility 文档。
与 Relay 一起使用
要使用 relay 组件,按照上述描述配置协商器实例,并将其传递给 Relay 协商器。
$queue[] = new RelayNegotiator($negotiator);
注意:协商器必须在依赖于协商数据的中间件组件之前排队。
集成
以下软件包已为中间件集成提供支持
贡献
您可以通过向 问题跟踪器 提交问题或提交拉取请求来做出贡献。