ptlis/psr7-conneg

PSR7 内容协商

v1.2.0 2015-06-16 17:14 UTC

This package is auto-updated.

Last update: 2024-09-07 00:32:36 UTC


README

使用PSR-7接口的内容协商中间件。

可配置组件,用于将处理过的请求装饰为首选类型信息。

基于 ptlis/ConNeg 构建。

Build Status Code Coverage Scrutinizer Code Quality License Latest Stable Version

安装

可以通过控制台安装

    $ 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);

注意:协商器必须在依赖于协商数据的中间件组件之前排队。

集成

以下软件包已为中间件集成提供支持

贡献

您可以通过向 问题跟踪器 提交问题或提交拉取请求来做出贡献。