Class Request
Implements methods for HTTP requests.
Used by Cake\Http\Client to contain request information for making requests.
Constants
-
stringMETHOD_DELETE ¶'DELETE'HTTP DELETE method
-
stringMETHOD_GET ¶'GET'HTTP GET method
-
stringMETHOD_HEAD ¶'HEAD'HTTP HEAD method
-
stringMETHOD_OPTIONS ¶'OPTIONS'HTTP OPTIONS method
-
stringMETHOD_PATCH ¶'PATCH'HTTP PATCH method
-
stringMETHOD_POST ¶'POST'HTTP POST method
-
stringMETHOD_PUT ¶'PUT'HTTP PUT method
-
stringMETHOD_TRACE ¶'TRACE'HTTP TRACE method
-
intSTATUS_ACCEPTED ¶202HTTP 202 code
-
intSTATUS_CREATED ¶201HTTP 201 code
-
intSTATUS_FOUND ¶302HTTP 302 code
-
intSTATUS_MOVED_PERMANENTLY ¶301HTTP 301 code
-
intSTATUS_OK ¶200HTTP 200 code
-
intSTATUS_SEE_OTHER ¶303HTTP 303 code
-
intSTATUS_TEMPORARY_REDIRECT ¶307HTTP 307 code
Property Summary
-
$_cookies protected
arrayThe array of cookies in the response.
-
$headerNames protected
arrayMap of normalized header name to original name used to register header.
-
$headers protected
arrayList of all registered headers, as key => array of values.
Method Summary
-
__construct() public
Constructor
-
addHeaders() protected
Add an array of headers to the request.
-
body() public
Get/set the body/payload for the message.
-
cookie() public
Get/Set cookie values.
-
cookies() public
Get all cookies
-
getBody() public
Gets the body of the message.
-
getHeader() public
Retrieves a message header value by the given case-insensitive name.
-
getHeaderLine() public
Retrieves a comma-separated string of the values for a single header.
-
getHeaders() public
Retrieves all message headers.
-
getMethod() public
Retrieves the HTTP method of the request.
-
getProtocolVersion() public
Retrieves the HTTP protocol version as a string.
-
getRequestTarget() public
Retrieves the message's request target.
-
getUri() public
Retrieves the URI instance.
-
hasHeader() public
Checks if a header exists by the given case-insensitive name.
-
header() public deprecated
Get/Set headers into the request.
-
headers() public deprecated
Get all headers
-
method() public deprecated
Get/Set the HTTP method.
-
url() public deprecated
Get/Set the url for the request.
-
version() public deprecated
Get/Set HTTP version.
-
withAddedHeader() public
Return an instance with the specified header appended with the given value.
-
withBody() public
Return an instance with the specified message body.
-
withHeader() public
Return an instance with the provided header, replacing any existing values of any headers with the same case-insensitive name.
-
withMethod() public
Return an instance with the provided HTTP method.
-
withProtocolVersion() public
Return an instance with the specified HTTP protocol version.
-
withRequestTarget() public
Create a new instance with a specific request-target.
-
withUri() public
Returns an instance with the provided URI.
-
withoutHeader() public
Return an instance without the specified header.
Method Detail
__construct() ¶ public
__construct(string $url = '', string $method = self::METHOD_GET, array $headers = [], array|string|null $data = null)
Constructor
Provides backwards compatible defaults for some properties.
Parameters
-
string$url optional The request URL
-
string$method optional The HTTP method to use.
-
array$headers optional The HTTP headers to set.
-
array|string|null$data optional The request body to use.
addHeaders() ¶ protected
addHeaders(array $headers): void
Add an array of headers to the request.
Parameters
-
array$headers The headers to add.
Returns
voidbody() ¶ public
body(string|null $body = null): mixed
Get/set the body/payload for the message.
Array data will be serialized with Cake\Http\FormData, and the content-type will be set.
Parameters
-
string|null$body optional The body for the request. Leave null for get
Returns
mixedEither $this or the body value.
cookie() ¶ public
cookie(string $name, string|null $value = null): mixed
Get/Set cookie values.
Getting a cookie
$request->cookie('session');
Setting one cookie
$request->cookie('session', '123456');
Setting multiple headers
$request->cookie(['test' => 'value', 'split' => 'banana']);
Parameters
-
string$name The name of the cookie to get/set
-
string|null$value optional Either the value or null when getting values.
Returns
mixedEither $this or the cookie value.
getBody() ¶ public
getBody(): StreamInterface
Gets the body of the message.
Returns
StreamInterfaceReturns the body as a stream.
getHeader() ¶ public
getHeader(string $header): string[]
Retrieves a message header value by the given case-insensitive name.
This method returns an array of all the header values of the given case-insensitive header name.
If the header does not appear in the message, this method MUST return an empty array.
Parameters
-
string$header Case-insensitive header field name.
Returns
string[]An array of string values as provided for the given header. If the header does not appear in the message, this method MUST return an empty array.
getHeaderLine() ¶ public
getHeaderLine(string $name): string
Retrieves a comma-separated string of the values for a single header.
This method returns all of the header values of the given case-insensitive header name as a string concatenated together using a comma.
NOTE: Not all header values may be appropriately represented using comma concatenation. For such headers, use getHeader() instead and supply your own delimiter when concatenating.
If the header does not appear in the message, this method MUST return an empty string.
Parameters
-
string$name Case-insensitive header field name.
Returns
stringA string of values as provided for the given header concatenated together using a comma. If the header does not appear in the message, this method MUST return an empty string.
getHeaders() ¶ public
getHeaders(): array
Retrieves all message headers.
The keys represent the header name as it will be sent over the wire, and each value is an array of strings associated with the header.
// Represent the headers as a string foreach ($message->getHeaders() as $name => $values) { echo $name . ": " . implode(", ", $values); }
// Emit headers iteratively: foreach ($message->getHeaders() as $name => $values) { foreach ($values as $value) { header(sprintf('%s: %s', $name, $value), false); } }
Returns
arrayReturns an associative array of the message's headers. Each key MUST be a header name, and each value MUST be an array of strings.
getMethod() ¶ public
getMethod(): string
Retrieves the HTTP method of the request.
Returns
stringReturns the request method.
getProtocolVersion() ¶ public
getProtocolVersion(): string
Retrieves the HTTP protocol version as a string.
The string MUST contain only the HTTP version number (e.g., "1.1", "1.0").
Returns
stringHTTP protocol version.
getRequestTarget() ¶ public
getRequestTarget(): string
Retrieves the message's request target.
Retrieves the message's request-target either as it will appear (for clients), as it appeared at request (for servers), or as it was specified for the instance (see withRequestTarget()).
In most cases, this will be the origin-form of the composed URI, unless a value was provided to the concrete implementation (see withRequestTarget() below).
If no URI is available, and no request-target has been specifically provided, this method MUST return the string "/".
Returns
stringgetUri() ¶ public
getUri(): UriInterface
Retrieves the URI instance.
This method MUST return a UriInterface instance.
Returns
UriInterfaceReturns a UriInterface instance representing the URI of the request, if any.
Links
hasHeader() ¶ public
hasHeader(string $header): bool
Checks if a header exists by the given case-insensitive name.
Parameters
-
string$header Case-insensitive header name.
Returns
boolReturns true if any header names match the given header name using a case-insensitive string comparison. Returns false if no matching header name is found in the message.
header() ¶ public
header(string|array|null $name = null, string|null $value = null): mixed
Get/Set headers into the request.
You can get the value of a header, or set one/many headers. Headers are set / fetched in a case insensitive way.
Getting headers
$request->header('Content-Type');
Setting one header
$request->header('Content-Type', 'application/json');
Setting multiple headers
$request->header(['Connection' => 'close', 'User-Agent' => 'CakePHP']);
Warning This method mutates the request in-place for backwards compatibility reasons, and is not part of the PSR7 interface.
Parameters
-
string|array|null$name optional The name to get, or array of multiple values to set.
-
string|null$value optional The value to set for the header.
Returns
mixedEither $this when setting or header value when getting.
method() ¶ public
method(string|null $method = null): $this|string
Get/Set the HTTP method.
Warning This method mutates the request in-place for backwards compatibility reasons, and is not part of the PSR7 interface.
Parameters
-
string|null$method optional The method for the request.
Returns
$this|stringEither this or the current method.
Throws
Cake\Core\Exception\ExceptionOn invalid methods.
url() ¶ public
url(string|null $url = null): $this|string
Get/Set the url for the request.
Warning This method mutates the request in-place for backwards compatibility reasons, and is not part of the PSR7 interface.
Parameters
-
string|null$url optional The url for the request. Leave null for get
Returns
$this|stringEither $this or the url value.
version() ¶ public
version(string|null $version = null): $this|string
Get/Set HTTP version.
Warning This method mutates the request in-place for backwards compatibility reasons, and is not part of the PSR7 interface.
Parameters
-
string|null$version optional The HTTP version.
Returns
$this|stringEither $this or the HTTP version.
withAddedHeader() ¶ public
withAddedHeader(string $header, string|string[] $value): static
Return an instance with the specified header appended with the given value.
Existing values for the specified header will be maintained. The new value(s) will be appended to the existing list. If the header did not exist previously, it will be added.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the new header and/or value.
Parameters
-
string$header Case-insensitive header field name to add.
-
string|string[]$value Header value(s).
Returns
staticThrows
InvalidArgumentExceptionfor invalid header names or values.
withBody() ¶ public
withBody(StreamInterface $body): static
Return an instance with the specified message body.
The body MUST be a StreamInterface object.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return a new instance that has the new body stream.
Parameters
-
StreamInterface$body Body.
Returns
staticThrows
InvalidArgumentExceptionWhen the body is not valid.
withHeader() ¶ public
withHeader(string $header, string|string[] $value): static
Return an instance with the provided header, replacing any existing values of any headers with the same case-insensitive name.
While header names are case-insensitive, the casing of the header will be preserved by this function, and returned from getHeaders().
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the new and/or updated header and value.
Parameters
-
string$header Case-insensitive header field name.
-
string|string[]$value Header value(s).
Returns
staticThrows
InvalidArgumentExceptionfor invalid header names or values.
withMethod() ¶ public
withMethod(string $method): static
Return an instance with the provided HTTP method.
While HTTP method names are typically all uppercase characters, HTTP method names are case-sensitive and thus implementations SHOULD NOT modify the given string.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the changed request method.
Parameters
-
string$method Case-insensitive method.
Returns
staticThrows
InvalidArgumentExceptionfor invalid HTTP methods.
withProtocolVersion() ¶ public
withProtocolVersion(string $version): static
Return an instance with the specified HTTP protocol version.
The version string MUST contain only the HTTP version number (e.g., "1.1", "1.0").
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the new protocol version.
Parameters
-
string$version HTTP protocol version
Returns
staticwithRequestTarget() ¶ public
withRequestTarget(mixed $requestTarget): static
Create a new instance with a specific request-target.
If the request needs a non-origin-form request-target — e.g., for specifying an absolute-form, authority-form, or asterisk-form — this method may be used to create an instance with the specified request-target, verbatim.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return a new instance that has the changed request target.
Parameters
-
mixed$requestTarget
Returns
staticThrows
InvalidArgumentExceptionif the request target is invalid.
Links
withUri() ¶ public
withUri(UriInterface $uri, bool $preserveHost = false): static
Returns an instance with the provided URI.
This method will update the Host header of the returned request by default if the URI contains a host component. If the URI does not contain a host component, any pre-existing Host header will be carried over to the returned request.
You can opt-in to preserving the original state of the Host header by
setting $preserveHost to true. When $preserveHost is set to
true, the returned request will not update the Host header of the
returned message -- even if the message contains no Host header. This
means that a call to getHeader('Host') on the original request MUST
equal the return value of a call to getHeader('Host') on the returned
request.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the new UriInterface instance.
Parameters
-
UriInterface$uri New request URI to use.
-
bool$preserveHost optional Preserve the original state of the Host header.
Returns
staticLinks
withoutHeader() ¶ public
withoutHeader(string $header): static
Return an instance without the specified header.
Header resolution MUST be done without case-sensitivity.
This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that removes the named header.
Parameters
-
string$header Case-insensitive header field name to remove.
Returns
static