蛋白质 / 响应
处理当前执行的 HTTP 响应
1.0.5
2019-05-30 08:13 UTC
Requires
- php: ^7.2
- proteins/event: ^1.0.0
- proteins/filter: ^1.0.0
- proteins/options: ^1.0.0
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', ], ]);