slim/http

Slim PSR-7 对象装饰器

1.4.0 2024-06-24 18:27 UTC

This package is auto-updated.

Last update: 2024-08-24 18:49:22 UTC


README

Slim PSR-7 对象装饰器

Build Status Coverage Status Total Downloads License

安装

建议您使用Composer来安装此库。

$ composer require slim/http

这将安装slim/http组件和所有必需的依赖项。需要PHP 7.4或更高版本。

测试

要执行测试套件,您需要安装所有开发依赖项。

$ git clone https://github.com/slimphp/Slim-Http
$ composer install
$ composer test

使用方法

装饰仓库提供3个工厂,用于实例化装饰器。它们分别返回PSR-7兼容接口。

  • 装饰响应工厂
  • 装饰服务器请求工厂
  • 装饰URI工厂

实例化装饰 Nyholm/Psr7 响应的示例

<?php

use Nyholm\Psr7\Factory\Psr17Factory;
use Slim\Http\Factory\DecoratedResponseFactory;

$nyholmFactory = new Psr17Factory();

/**
 * DecoratedResponseFactory takes 2 parameters
 * @param \Psr\Http\Message\ResponseFactoryInterface which should be a ResponseFactory originating from the PSR-7 Implementation of your choice
 * @param \Psr\Http\Message\StreamFactoryInterface which should be a StreamFactory originating from the PSR-7 Implementation of your choice
 * Note: Nyholm/Psr17 has one factory which implements Both ResponseFactoryInterface and StreamFactoryInterface see https://github.com/Nyholm/psr7/blob/master/src/Factory/Psr17Factory.php
 */
$decoratedResponseFactory = new DecoratedResponseFactory($nyholmFactory, $nyholmFactory);

/**
 * @var \Slim\Http\Response $response
 * The returned variable is a Response which has methods like withJson()
 */
$response = $decoratedResponseFactory->createResponse(200, 'OK');
$response = $response->withJson(['data' => [1, 2, 3]]);

实例化装饰 Laminas Diactoros 响应的示例

<?php

use Laminas\Diactoros\ResponseFactory;
use Laminas\Diactoros\StreamFactory;
use Slim\Http\Factory\DecoratedResponseFactory;

$responseFactory = new ResponseFactory();
$streamFactory = new StreamFactory();

/**
 * DecoratedResponseFactory takes 2 parameters
 * @param \Psr\Http\Message\ResponseFactoryInterface which should be a ResponseFactory originating from the PSR-7 Implementation of your choice
 * @param \Psr\Http\Message\StreamFactoryInterface which should be a StreamFactory originating from the PSR-7 Implementation of your choice
 */
$decoratedResponseFactory = new DecoratedResponseFactory($responseFactory, $streamFactory);

/**
 * @var \Slim\Http\Response $response
 * The returned variable is a Response which has methods like withJson()
 */
$response = $decoratedResponseFactory->createResponse(200, 'OK');
$response = $response->withJson(['data' => [1, 2, 3]]);

装饰响应对象方法

装饰的ResponseInterface提供了以下额外方法

Response::withJson($data, $status, $options, $depth)

Response::withFileDownload($file, $name)

触发客户端下载指定的文件。

Response::withFile($file, $contentType)

向客户端发送文件

Response::withRedirect($url, $status)

Response::write($data)

Response::isClientError()

断言基础响应的状态码在400500之间。

Response::isEmpty()

断言基础响应的状态码是204, 205304

Response::isForbidden()

断言基础响应的状态码是403

Response::isInformational()

断言基础响应的状态码在100200之间。

Response::isOk()

断言基础响应的状态码是200

Response::isNotFound()

断言基础响应的状态码是404

Response::isRedirect()

断言基础响应的状态码是301302303307308

Response::isRedirection()

断言基础响应的状态码在300400之间。

Response::isServerError()

断言基础响应的状态码在500600之间。

Response::isSuccessful()

断言基础响应的状态码在200300之间。

Response::__toString()

将返回基础响应对象的格式化字符串表示。

HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8

{"Hello": "World"}

装饰服务器请求对象方法

装饰的ServerRequestInterface提供了以下额外方法

ServerRequest::withAttributes($attributes)

ServerRequest::getContentCharset()

返回底层服务器请求对象的Content-Type头中检测到的字符集。如果没有值,则返回null

ServerRequest::getContentType()

返回底层服务器请求对象的Content-Type头中的值。如果没有值,则返回null

ServerRequest::getContentLength()

返回底层服务器请求对象的Content-Length头中的值。如果没有值,则返回null

ServerRequest::getCookieParam($key, $default)

ServerRequest::getMediaType()

返回底层服务器请求对象的Content-Type头中检测到的第一个值。如果没有值,则返回null

ServerRequest::getMediaTypeParams()

返回底层服务器请求对象的Content-Type头中检测到的值的数组。如果没有值,则返回空数组。

ServerRequest::getParam($key, $default)

$_POST$_GET 中获取键的值

ServerRequest::getParams()

返回合并了 $_POST$_GET 参数的关联数组。

ServerRequest::getParsedBody()

如果底层PSR-7实现已经解析了,则返回底层服务器请求对象的解析后的主体。如果解析后的主体为空,我们的装饰器会尝试检测内容类型,并使用已注册的媒体类型解析器之一来解析主体。

默认的媒体类型解析器支持

  • JSON
  • XML

您可以使用 ServerRequest::registerMediaTypeParser() 方法注册自己的媒体类型解析器。

ServerRequest::getParsedBodyParam($key, $default)

返回底层服务器请求对象解析后的主体中键的值。

ServerRequest::getQueryParam($key, $default)

返回解析后的 ServerRequest 查询字符串中键的值

ServerRequest::getServerParam($key, $default)

返回底层服务器请求对象解析后的服务器参数中键的值。

ServerRequest::registerMediaTypeParser($key, $default)

返回底层服务器请求对象解析后的服务器参数中键的值。

ServerRequest::isMethod($method)

ServerRequest::isDelete()

断言底层服务器请求的方法是 DELETE

ServerRequest::isGet()

断言底层服务器请求的方法是 GET

ServerRequest::isHead()

断言底层服务器请求的方法是 HEAD

ServerRequest::isOptions()

断言底层服务器请求的方法是 OPTIONS

ServerRequest::isPatch()

断言底层服务器请求的方法是 PATCH

ServerRequest::isPost()

断言底层服务器请求的方法是 POST

ServerRequest::isPut()

断言底层服务器请求的方法是 PUT

ServerRequest::isXhr()

断言底层服务器请求的头部 X-Requested-WithXMLHttpRequest

装饰的 Uri 对象方法

装饰的 UriInterface 提供以下附加方法

Uri::getBaseUrl()

返回底层 uri 对象的完全限定基本 URL。

贡献

请参阅 CONTRIBUTING 以获取详细信息。

安全

如果您发现与安全相关的问题,请通过电子邮件发送至 [email protected],而不是使用问题跟踪器。

致谢

许可

本组件使用 MIT 许可证授权。有关更多信息,请参阅 许可文件