On this page
Class BodyParserMiddleware
Parse encoded request body data.
Enables JSON and XML request payloads to be parsed into the request's Provides CSRF protection & validation.
You can also add your own request body parsers using the addParser()
method.
Properties summary
-
$methods
protectedarray
-
$parsers
protectedarray
Method Summary
-
__construct() publicConstructor
-
__invoke() publicApply the middleware.
-
addParser() publicAdd a parser.
-
decodeJson() protectedDecode JSON into an array.
-
decodeXml() protectedDecode XML into an array.
-
setMethods() publicSet the HTTP methods to parse request bodies on.
Method Detail
__construct()source public
__construct( array $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
$options
optional [] - The options to use. See above.
__invoke()source public
__invoke( Psr\Http\Message\ServerRequestInterface $request , Psr\Http\Message\ResponseInterface $response , callable $next )
Apply the middleware.
Will modify the request adding a parsed body if the content-type is known.
Parameters
-
Psr\Http\Message\ServerRequestInterface
$request
- The request.
-
Psr\Http\Message\ResponseInterface
$response
- The response.
-
callable
$next
- Callback to invoke the next middleware.
Returns
Cake\Http\Response
A response
addParser()source public
addParser( array $types , callable $parser )
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
$types
- An array of content-type header values to match. eg. application/json
-
callable
$parser
-
The parser function. Must return an array of data to be inserted into the request.
Returns
$this
decodeJson()source protected
decodeJson( string $body )
Decode JSON into an array.
Parameters
-
string
$body
- The request body to decode
Returns
arraydecodeXml()source protected
decodeXml( string $body )
Decode XML into an array.
Parameters
-
string
$body
- The request body to decode
Returns
arraysetMethods()source public
setMethods( array $methods )
Set the HTTP methods to parse request bodies on.
Parameters
-
array
$methods
- The methods to parse data on.
Returns
$this
Properties detail
$methodssource
protected array
The HTTP methods to parse data on.
['PUT', 'POST', 'PATCH', 'DELETE']
© 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/3.7/class-Cake.Http.Middleware.BodyParserMiddleware.html