W3cubDocs

/CakePHP 4.1

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
    \Closure[]

    Registered Parsers

Method Summary

Method Detail

__construct() 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.

addParser() public

addParser(array $types, \Closure $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

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)

Decode JSON into an array.

Parameters

string $body

The request body to decode

Returns

array|null

decodeXml() protected

decodeXml(string $body)

Decode XML into an array.

Parameters

string $body

The request body to decode

Returns

array

getMethods() public

getMethods()

Get the HTTP methods to parse request bodies on.

Returns

string[]

getParsers() public

getParsers()

Get the current parsers

Returns

\Closure[]

process() public

process(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Server\RequestHandlerInterface $handler)

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\Server\RequestHandlerInterface $handler

The request handler.

Returns

\Psr\Http\Message\ResponseInterface

A response.

setMethods() public

setMethods(array $methods)

Set the HTTP methods to parse request bodies on.

Parameters

string[] $methods

The methods to parse data on.

Returns

$this

Property Detail

$methods protected

The HTTP methods to parse data on.

Type

string[]

$parsers protected

Registered Parsers

Type

\Closure[]

© 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.1/class-Cake.Http.Middleware.BodyParserMiddleware.html