Files
faveo/vendor/zendframework/zend-http/doc/book/request.md
Manish Verma 76e85db070 update 1.0.8.0
Commits for version update
2016-10-17 12:02:27 +05:30

9.4 KiB

The Request Class

Zend\Http\Request is responsible for providing a fluent API that allows a developer to interact with all the various parts of an HTTP request.

A typical HTTP request looks like this:

| METHOD | URI | VERSION |
|        HEADERS         |
|         BODY           |

In simplified terms, the request consists of a method, URI, and HTTP version number; together, they make up the "Request Line." This line is followed by zero or more HTTP headers, which is followed by an empty line and then the request body; the body is typically used when a client wishes to send data — which could be urlencoded parameters, a JSON document, an XML document, or even one or more files — to the server. More information on the structure and specification of a HTTP request can be found in RFC-2616 on the W3.org site.

Quick Start

Request objects can either be created from the provided fromString() factory, or, if you wish to have a completely empty object to start with, by manually instantiating the Zend\Http\Request class with no parameters.

use Zend\Http\Request;

$request = Request::fromString(<<<EOS
POST /foo HTTP/1.1
HeaderField1: header-field-value1
HeaderField2: header-field-value2

foo=bar
EOS
);

// OR, the completely equivalent

$request = new Request();
$request->setMethod(Request::METHOD_POST);
$request->setUri('/foo');
$request->getHeaders()->addHeaders([
    'HeaderField1' => 'header-field-value1',
    'HeaderField2' => 'header-field-value2',
]);
$request->getPost()->set('foo', 'bar');

Configuration Options

No configuration options are available.

Available Methods

The following table details available methods, their signatures, and a brief description. Note that the following references refer to the following fully qualified class names and/or namespaces:

  • HeaderInterface: Zend\Http\Header\HeaderInterface
  • Headers: Zend\Http\Headers
  • Header: Zend\Http\Header
  • Parameters: Zend\Stdlib\ParametersInterface
  • Request: Zend\Http\Request
  • Uri: Zend\Uri\Http
Method signature Description
static fromString(string $string) : Request A factory that produces a Request object from a well-formed HTTP request message string.
setMethod(string $method) : self Set the method for this request.
getMethod() : string Return the method for this request.
`setUri(string Uri $uri) : self`
getUri() : Uri Return the URI for this request object.
getUriString() : string Return the URI for this request object as a string.
setVersion(string $version) : self Set the HTTP version for this object, one of 1.0 or 1.1 (Request::VERSION_10, Request::VERSION_11).
getVersion() : string Return the HTTP version for this request.
setQuery(Parameters $query) : self Provide an alternate Parameter Container implementation for query parameters in this object. (This is NOT the primary API for value setting; for that, see getQuery()).
`getQuery(string null $name, mixed
setPost(Parameters $post) : self Provide an alternate Parameter Container implementation for POST parameters in this object. (This is NOT the primary API for value setting; for that, see getPost()).
`getPost(string null $name, mixed
getCookie() : Header\Cookie Return the Cookie header, this is the same as calling $request->getHeaders()->get('Cookie');.
setFiles(Parameters $files) : self Provide an alternate Parameter Container implementation for file parameters in this object, (This is NOT the primary API for value setting; for that, see getFiles()).
`getFiles(string null $name, mixed
setHeaders(Headers $headers) : self Provide an alternate Parameter Container implementation for headers in this object, (this is NOT the primary API for value setting, for that see getHeaders()).
`getHeaders(string null $name, mixed
`setMetadata(string int
`getMetadata(null string
setContent(mixed $value) : self Set request body (content).
getContent() : mixed Get request body (content).
isOptions() : bool Is this an OPTIONS method request?
isGet() : bool Is this a GET method request?
isHead() : bool Is this a HEAD method request?
isPost() : bool Is this a POST method request?
isPut() : bool Is this a PUT method request?
isDelete() : bool Is this a DELETE method request?
isTrace() : bool Is this a TRACE method request?
isConnect() : bool Is this a CONNECT method request?
isPatch() : bool Is this a PATCH method request?
isXmlHttpRequest() : bool Is this a Javascript XMLHttpRequest?
isFlashRequest() : bool Is this a Flash request?
renderRequestLine() : string Return the formatted request line (first line) for this HTTP request.
toString() : string Returns string
__toString() : string Allow PHP casting of this object.

Examples

Generating a Request object from a string

use Zend\Http\Request;

$string = "GET /foo HTTP/1.1\r\n\r\nSome Content";
$request = Request::fromString($string);

$request->getMethod();    // returns Request::METHOD_GET
$request->getUri();       // returns Zend\Uri\Http object
$request->getUriString(); // returns '/foo'
$request->getVersion();   // returns Request::VERSION_11 or '1.1'
$request->getContent();   // returns 'Some Content'

Retrieving and setting headers

use Zend\Http\Request;
use Zend\Http\Header\Cookie;

$request = new Request();
$request->getHeaders()->get('Content-Type'); // return content type
$request->getHeaders()->addHeader(new Cookie(['foo' => 'bar']));
foreach ($request->getHeaders() as $header) {
    printf("%s with value %s\n", $header->getFieldName(), $header->getFieldValue());
}

Retrieving and setting GET and POST values

use Zend\Http\Request;

$request = new Request();

// getPost() and getQuery() both return, by default, a Parameters object, which
// extends ArrayObject
$request->getPost()->foo = 'Foo value';
$request->getQuery()->bar = 'Bar value';
$request->getPost('foo'); // returns 'Foo value'
$request->getQuery()->offsetGet('bar'); // returns 'Bar value'

Generating a formatted HTTP Request from a Request object

use Zend\Http\Request;

$request = new Request();
$request->setMethod(Request::METHOD_POST);
$request->setUri('/foo');
$request->getHeaders()->addHeaders([
    'HeaderField1' => 'header-field-value1',
    'HeaderField2' => 'header-field-value2',
]);
$request->getPost()->set('foo', 'bar');
$request->setContent($request->getPost()->toString());
echo $request->toString();

/** Will produce:
POST /foo HTTP/1.1
HeaderField1: header-field-value1
HeaderField2: header-field-value2

foo=bar
*/