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
- 
    $methodsprotectedThe HTTP methods to parse data on.string[]
- 
    $parsersprotectedRegistered Parsersarray
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
- jsonSet to false to disable json body parsing.
- xmlSet to true to enable XML parsing. Defaults to false, as XML handling requires more care than JSON does.
- methodsThe HTTP methods to parse on. Defaults to PUT, POST, PATCH DELETE.
Parameters
- 
     array $optionsoptional []
- 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\ResponseA 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 string[]
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.8/class-Cake.Http.Middleware.BodyParserMiddleware.html