蛋白质/响应

处理当前执行的 HTTP 响应

1.0.5 2019-05-30 08:13 UTC

This package is auto-updated.

Last update: 2024-08-29 04:58:07 UTC


README

蛋白质 | 响应

响应模块封装并处理发送到请求代理的负载。

安装

composer require proteins/response

通过以下方式要求类

use Proteins\Response;

向响应追加数据

通过 add 方法通过响应缓冲区追加一个字符串。

Response::add('Hello world!');

更改内容类型

type 方法接受一个 MIME 类型字符串(或 Response::TYPE_* 常量)作为正文内容类型。

Response::send();

向响应添加头信息

header($name, $value) 方法设置一个头信息,以便发送给请求代理。

Response::header('Authorization','Bearer mF_9.B5f-4.1JqM');
Authorization: Bearer mF_9.B5f-4.1JqM

获取所有定义的头信息

$response_headers = Response::headers();

获取响应正文

$response_body = Response::body();

设置整个响应正文

您可以通过传递参数到 body 方法来设置整个响应正文。

Response::body($new_body);

设置 HTTP 响应状态

您可以通过 status 方法设置 HTTP 响应状态。

Response::status(401);

error($code, $message='') 方法用于传递错误。

此方法触发 core.response.error 事件。

Response::error(401, "User not authorized");

强制下载响应正文

您可以通过传递文件名作为参数的 download 方法强制下载响应正文。传递一个假值以禁用下载。

Response::download("export.csv");

下载方法也支持使用原始字符串数据作为参数的数组。

Response::download([
	"filename" 	=> "export.csv",
	"charset" 	=> "utf-8",
	"mime" 		=> "text/csv",
	"body" 		=> CSV::fromSQL("SELECT * FROM users")
]);

HTTP/2 服务器推送

通过 push 方法启用 HTTP/服务器推送支持。
如果您有一个要在下一个 Response::send 中推送的资源链接列表,您可以传递 URI 和资源类型,如W3C 预加载草案中定义的。

Response::push('/assets/css/main.css');
Response::push('/assets/js/main.js');

如果您不传递资源类型作为第二个参数,代码将根据扩展名进行猜测,但是指定资源类型(对于预加载头格式中 as 参数的参数)更好(更快)。

当前自动发现的资源类型包括

Response::push('/assets/css/main.css','style');
Response::push('/assets/js/main.js','script');

可以通过数组传递多个资源到单个 push 调用

Response::push([
  '/assets/css/main.css',
  '/assets/js/main.js',
]);

并且与直接调用版本一样,您可以通过数组键定义资源类型

Response::push([
  'style'  => '/assets/css/main.css',
  'script' => [
    '/assets/js/vendors.js',
    '/assets/js/main.js',
  ],
]);