On this page
Class BodyParserMiddleware
Parse encoded request body data.
Enables JSON and XML request payloads to be parsed into the request's body. You can also add your own request body parsers using the addParser()
method.
Property Summary
Method Summary
__construct() public
Constructor
addParser() public
Add a parser.
decodeJson() protected
Decode JSON into an array.
decodeXml() protected
Decode XML into an array.
getMethods() public
Get the HTTP methods to parse request bodies on.
getParsers() public
Get the current parsers
process() public
Apply the middleware.
setMethods() public
Set the HTTP methods to parse request bodies on.
Method Detail
__construct() public
__construct(array<string, mixed> $options = [])
Constructor
Options
json
Set to false to disable JSON body parsing.xml
Set to true to enable XML parsing. Defaults to false, as XML handling requires more care than JSON does.methods
The HTTP methods to parse on. Defaults to PUT, POST, PATCH DELETE.
Parameters
array<string, mixed>
$options optional-
The options to use. See above.
addParser() public
addParser(array<string> $types, Closure $parser): $this
Add a parser.
Map a set of content-type header values to be parsed by the $parser.
Example
An naive CSV request body parser could be built like so:
$parser->addParser(['text/csv'], function ($body) {
return str_getcsv($body);
});
Parameters
array<string>
$types-
An array of content-type header values to match. eg. application/json
Closure
$parser-
The parser function. Must return an array of data to be inserted into the request.
Returns
$this
decodeJson() protected
decodeJson(string $body): array|null
Decode JSON into an array.
Parameters
string
$body-
The request body to decode
Returns
array|null
decodeXml() protected
decodeXml(string $body): array
Decode XML into an array.
Parameters
string
$body-
The request body to decode
Returns
array
getMethods() public
getMethods(): array<string>
Get the HTTP methods to parse request bodies on.
Returns
array<string>
getParsers() public
getParsers(): arrayClosure>
Get the current parsers
Returns
arrayClosure>
process() public
process(ServerRequestInterface $request, RequestHandlerInterface $handler): Psr\Http\Message\ResponseInterface
Apply the middleware.
Will modify the request adding a parsed body if the content-type is known.
Parameters
ServerRequestInterface
$request-
The request.
RequestHandlerInterface
$handler-
The request handler.
Returns
Psr\Http\Message\ResponseInterface
setMethods() public
setMethods(array<string> $methods): $this
Set the HTTP methods to parse request bodies on.
Parameters
array<string>
$methods-
The methods to parse data on.
Returns
$this
Property Detail
$methods protected
The HTTP methods to parse data on.
Type
array<string>
$parsers protected
Registered Parsers
Type
arrayClosure>
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.4/class-Cake.Http.Middleware.BodyParserMiddleware.html