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 protected
    string[]
    The HTTP methods to parse data on.
  • $parsers protected
    array
    Registered Parsers

Method Summary

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

array

decodeXml()source protected

decodeXml( string $body )

Decode XML into an array.

Parameters

string $body
The request body to decode

Returns

array

setMethods()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']

$parserssource

protected array

Registered Parsers

[]

© 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