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.
Property Summary
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() ¶ 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$options optional
- The options to use. See above. 
__invoke() ¶ public
__invoke(Psr\Http\Message\ServerRequestInterface $request, Psr\Http\Message\ResponseInterface $response, callable $next): Cake\Http\ResponseApply 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() ¶ public
addParser(string[] $types, callable $parser): $thisAdd 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
- 
                string[]$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
$thisdecodeJson() ¶ protected
decodeJson(string $body): arrayDecode JSON into an array.
Parameters
- 
                string$body
- The request body to decode 
Returns
arraydecodeXml() ¶ protected
decodeXml(string $body): arrayDecode XML into an array.
Parameters
- 
                string$body
- The request body to decode 
Returns
arraysetMethods() ¶ public
setMethods(string[] $methods): $thisSet the HTTP methods to parse request bodies on.
Parameters
- 
                string[]$methods
- The methods to parse data on. 
Returns
$this