jitsu/http

面向对象的HTTP请求和响应接口

0.2.1 2020-02-11 08:16 UTC

This package is auto-updated.

Last update: 2024-09-11 18:38:20 UTC


README

此包定义了一个抽象的、面向对象的接口,用于与HTTP请求和响应交互,并实现了此接口,用于请求和响应数据,这些数据传统上可以通过PHP脚本通过超全局变量、全局函数等访问。这使得应用程序代码可以从请求来源和响应去向的具体细节中解耦,从而实现依赖注入和单元测试。

还可以查看 PSR-7,它旨在实现相同的目标,显然具有更多的社区支持。

此包是 Jitsu 的一部分。

安装

使用 Composer 安装此包

composer require jitsu/http

命名空间

所有类和接口都在命名空间 Jitsu 下定义。主要的是在 Jitsu\Http 下定义。

API

interface Jitsu\Http\RequestInterface

HTTP请求的抽象接口。

$request_interface->getMethod()

获取请求中使用的HTTP方法。

$request_interface->getUri()

获取请求中发送的原始URI。

$request_interface->getProtocol()

获取请求中使用的协议/版本字符串。

$request_interface->getScheme()

获取请求中使用的方案(http或https)。

$request_interface->getHeader($name)

查找请求中发送的头部。

返回给定名称的头部值(不区分大小写),如果未发送该头部,则返回null。

$request_interface->getAllHeaders()

获取请求中发送的所有头部。

返回一个将原始头部名称映射到其值的数组。

$request_interface->getBody()

获取请求体作为单个字符串。

$request_interface->getBodyStream()

获取请求体的可读文件流句柄。

$request_interface->getOriginIpAddress()

获取远程端点的IP地址。

$request_interface->getOriginPort()

获取远程端点的端口号。

interface Jitsu\Http\ResponseInterface

HTTP响应的抽象接口。

$response_interface->setStatus($version, $code, $reason)

设置响应的HTTP状态行。

$response_interface->addHeader($name, $value)

在响应中发送HTTP头部。

不会覆盖具有相同名称的先前发送的头部。

$response_interface->flushOutputBuffer()

将PHP输出缓冲区刷新到响应体中。

$response_interface->sentHeaders()

确定是否已发送头部。

如果头部已经发送,则可能无法再修改。

class Jitsu\Http\RequestBase

实现 RequestInterface

RequestInterface 的扩展,提供了一些实用方法。

$request_base->fullUrl()

获取完整的请求URL。

包括方案、主机名、路径和查询字符串。这是原始形式,不是URL解码的。

$request_base->scheme()

获取请求方案。

$request_base->protocol()

获取请求中使用的协议/版本字符串。

$request_base->host()

获取 Host 头的值。

$request_base->method()

获取请求中使用的HTTP方法。

总是返回大写(例如 'GET''PUT' 等)。

$request_base->uri()

获取请求中发送的原始URI。

这包括请求的路径和查询字符串。注意,这是原始形式,不是URL解码后的形式。

$request_base->path()

获取请求URI的路径部分。

注意,这是原始形式,不是URL解码后的形式。

$request_base->queryString()

获取请求URI的查询字符串。

注意,这是原始形式,不是URL解码后的形式。

$request_base->form($name, $default = null)

从请求中查找表单编码的参数。

$request_base->formParams()

从请求中获取所有表单编码的参数。

返回一个数组,将请求中发送的表单编码参数的名称映射到它们的值。所有键和值都是解码后的。参数根据所使用的HTTP方法从请求的相应部分获取。对于 GETDELETE 等,它们从查询字符串中解析出来,否则从请求体中解析出来。

$request_base->header($name, $default = null)

查找请求中发送的头部。

$request_base->headers()

获取请求中发送的所有头。

返回一个将原始头部名称映射到其值的数组。

$request_base->contentType()

获取请求的内容类型。

$request_base->acceptableContentTypes()

Accept 头解析为一个可接受的内容类型列表。

返回一个关联数组,将内容类型字符串映射到它们各自的质量评分,按质量评分降序排列。

$request_base->accepts($content_type)

返回请求是否会接受特定内容类型。

$request_base->negotiateContentType($acceptable)

确定请求的最可接受内容类型。

给定一个可接受内容类型的数组,返回在 Accept 头中质量评分最高的内容类型的索引。如果没有内容类型是可接受的,则返回 null

$request_base->referer()

referrer 的别名。

是正确拼写的 referrer 的别名。请参阅 \Jitsu\RequestBase::referrer()

$request_base->referrer()

获取HTTP引用者URI或 null 如果它没有被发送。

$request_base->cookie($name, $default = null)

查找请求中发送的cookie。

解析并解码cookie值。

$request_base->cookies()

获取请求中发送的cookies。

解析并解码cookie值。

TODO:此功能目前尚未实现。

$request_base->body()

返回请求体作为单个字符串。

$request_base->bodyStream()

返回请求体的可读文件流句柄。

$request_base->originIpAddress()

获取远程端点的IP地址。

$request_base->originPort()

获取远程端点的端口号。

class Jitsu\Http\ResponseBase

实现 ResponseInterface

ResponseInterface 的扩展,提供了一些实用方法。

$response_base->setStatusCode($code, $reason = '')

设置响应的状态码。

抽象公共函数 statusCode()

获取当前设置在此响应上的状态码。

$response_base->setContentType($type)

设置响应的内容类型。

$response_base->addCookie($name, $value, $attrs)

向响应中添加cookie。

TODO:此功能尚未实现。

$response_base->redirect($url, $code, $reason = '')

向另一个URL发出重定向。

注意,这不会退出当前进程。请记住,依赖于客户端尊重此头并关闭连接给您可能是一个巨大的安全漏洞。

在此处也设置了响应码。响应码应该是3XX代码。

$response_base->startOutputBuffering()

开始缓冲PHP输出。

$response_base->clearOutputBuffer()

丢弃PHP输出缓冲区的内容。

class Jitsu\Http\CurrentRequest

扩展 RequestBase

RequestBase 的子类,实现了针对当前HTTP请求的 RequestInterface

$current_request->getMethod()

$current_request->getUri()

$current_request->getProtocol()

$current_request->getScheme()

$current_request->getHeader($name)

$current_request->getAllHeaders()

$current_request->getBody()

$current_request->getBodyStream()

$current_request->getOriginIpAddress()

$current_request->getOriginPort()

$current_request->method()

$current_request->path()

$current_request->queryString()

$current_request->form($name, $default = null)

$current_request->formParams()

$current_request->cookie($name, $default = null)

$current_request->cookies()

$current_request->originIpAddress()

$current_request->originPort()

$current_request->timestamp()

类 Jitsu\Http\CurrentResponse

继承自 ResponseBase

ResponseBase 的子类,并实现了 ResponseInterface,用于处理当前 HTTP 响应。

$current_response->setStatus($version, $code, $reason)

$current_response->setStatusCode($code, $reason = null)

$current_response->statusCode()

$current_response->addHeader($name, $value)

$current_response->addCookie($name, $value, $attrs = array())

$current_response->deleteCookie($name, $attrs)

$current_response->redirect($url, $code, $reason = null)

$current_response->flushOutputBuffer()

$current_response->sentHeaders()

类 Jitsu\Request

获取当前正在处理的 HTTP 请求的信息。

\Jitsu\Http\CurrentRequest 通过面向对象的接口提供相同的信息。建议使用它。

Request::scheme()

获取 URI 的方案(httphttps)。

Request::protocol()

获取 HTTP 请求中指示的协议/版本。

Request::host()

获取 Host 头的值。

Request::method()

获取请求中使用的 HTTP 方法(GETPOST 等)。

Request::uri()

获取完整的原始请求 URI。

Request::queryString()

获取 URI 的查询字符串。

Request::form($name, $default = null)

从请求中查找表单编码的参数。

Request::formParams()

获取请求的所有表单编码参数。

Request::header($name, $default = null)

在请求中查找 HTTP 头。

Request::headers()

获取请求中发送的所有 HTTP 头。

如果 PHP 通过 Apache 运行(函数 apache_request_header 可用),则应返回原始大小写的头名称。否则,它们将是小写。

Request::cookie($name, $default = null)

查找请求中发送的 cookies。

Request::cookies()

以数组形式获取请求中发送的所有 cookies。

Request::body()

将请求体中的原始输入吸入到一个字符串中。

结果被缓存,因此该函数可能被多次调用。

Request::bodyStream()

返回请求体的文件流句柄。

Request::file($name)

查找关于通过多部分表单请求发送的文件的信息。

Request::files()

获取关于通过多部分表单请求发送的所有文件的信息。

Request::saveFile($name, $dest_path)

保存作为多部分表单参数上传的文件。

将表单参数 $name 上传的文件保存到文件系统中的路径 $dest_path

Request::originIpAddress()

获取远程端点的IP地址。

Request::originPort()

获取远程端点的端口号。

Request::timestamp()

请求开始的戳记。

类 Jitsu\Response

构建即将发送的当前 HTTP 响应的实用工具。

\Jitsu\Http\CurrentResponse 通过面向对象的接口提供相同的能力。建议使用它。

Response::setStatus($version, $code, $reason)

设置响应状态行。

注意,这与 code 是互斥的。

Response::setStatusCode($code)

设置响应代码。

自动设置适当的理由字符串。

注意,这与 status 是互斥的。

Response::statusCode()

获取当前设置的响应代码。

Response::addHeader($name, $value)

在响应中设置头。

必须在写入输出之前调用,就像 PHP header 一样。

不会覆盖带有相同名称之前发送的头。

Response::addCookie($name, $value, $expires = null, $path = null, $domain = null)

在响应中设置 cookie。

Response::deleteCookie($name, $domain = null, $path = null)

在响应中指示删除cookie。

Response::redirect($url, $code)

发出HTTP重定向。

Response::startOutputBuffering()

开始缓冲PHP输出。

Response::flushOutputBuffer()

刷新PHP输出缓冲区并停止缓冲。

Response::clearOutputBuffer()

丢弃PHP输出缓冲区的内容并停止缓冲。

Response::sentHeaders()

确定是否已发送头部。

如果头部已经发送,则可能无法再修改。

Response::bodyStream()

获取对响应体的可写文件流的句柄。