类 BodyParserMiddleware
解析编码的请求体数据。
使 JSON 和 XML 请求有效负载能够解析为请求的正文。您还可以使用 addParser()
方法添加自己的请求正文解析器。
命名空间: Cake\Http\Middleware
方法摘要
-
__construct() public
构造函数
-
addParser() public
添加解析器。
-
decodeJson() protected
将 JSON 解码为数组。
-
decodeXml() protected
将 XML 解码为数组。
-
getMethods() public
获取要解析请求正文的 HTTP 方法。
-
getParsers() public
获取当前的解析器
-
process() public
应用中间件。
-
setMethods() public
设置要解析请求正文的 HTTP 方法。
方法详细信息
__construct() ¶ public
__construct(array<string, mixed> $options = [])
构造函数
选项
json
设置为 false 以禁用 JSON 正文解析。xml
设置为 true 以启用 XML 解析。默认值为 false,因为 XML 处理比 JSON 更需要小心。methods
要解析的方法的 HTTP 方法。默认为 PUT、POST、PATCH DELETE。
参数
-
array<string, mixed>
$options optional 要使用的选项。见上文。
addParser() ¶ public
addParser(list<string> $types, Closure $parser): $this
添加解析器。
将一组 content-type 头值映射到由 $parser 解析。
示例
一个简单的 CSV 请求正文解析器可以这样构建
$parser->addParser(['text/csv'], function ($body) {
return str_getcsv($body);
});
参数
-
list<string>
$types 要匹配的一组 content-type 头值。例如 application/json
-
Closure
$parser 解析器函数。必须返回一个要插入请求中的数据数组。
返回值
$this
decodeJson() ¶ protected
decodeJson(string $body): array|null
将 JSON 解码为数组。
参数
-
string
$body 要解码的请求正文
返回值
array|null
decodeXml() ¶ protected
decodeXml(string $body): array
将 XML 解码为数组。
参数
-
string
$body 要解码的请求正文
返回值
array
process() ¶ public
process(ServerRequestInterface $request, RequestHandlerInterface $handler): Psr\Http\Message\ResponseInterface
应用中间件。
如果 content-type 已知,将修改请求并添加解析后的正文。
参数
-
ServerRequestInterface
$request 请求。
-
RequestHandlerInterface
$handler 请求处理程序。
返回值
Psr\Http\Message\ResponseInterface
setMethods() ¶ public
setMethods(list<string> $methods): $this
设置要解析请求正文的 HTTP 方法。
参数
-
list<string>
$methods 要解析数据的方法。
返回值
$this