2015-08-27 12:03:05 -07:00
< ? php
namespace Psr\Http\Message ;
/**
* Representation of an outgoing , client - side request .
*
* Per the HTTP specification , this interface includes properties for
* each of the following :
*
* - Protocol version
* - HTTP method
* - URI
* - Headers
* - Message body
*
* During construction , implementations MUST attempt to set the Host header from
* a provided URI if no Host header is provided .
*
* Requests are considered immutable ; all methods that might change state MUST
* be implemented such that they retain the internal state of the current
* message and return an instance that contains the changed state .
*/
interface RequestInterface extends MessageInterface
{
/**
* 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 " / " .
*
* @ return string
*/
public function getRequestTarget ();
/**
* Return an instance with the 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 an instance that has the
* changed request target .
*
2017-04-13 15:53:35 +01:00
* @ link http :// tools . ietf . org / html / rfc7230 #section-5.3 (for the various
2015-08-27 12:03:05 -07:00
* request - target forms allowed in request messages )
* @ param mixed $requestTarget
2017-04-13 15:53:35 +01:00
* @ return static
2015-08-27 12:03:05 -07:00
*/
public function withRequestTarget ( $requestTarget );
/**
* Retrieves the HTTP method of the request .
*
* @ return string Returns the request method .
*/
public function getMethod ();
/**
* 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 .
*
* @ param string $method Case - sensitive method .
2017-04-13 15:53:35 +01:00
* @ return static
2015-08-27 12:03:05 -07:00
* @ throws \InvalidArgumentException for invalid HTTP methods .
*/
public function withMethod ( $method );
/**
* Retrieves the URI instance .
*
* This method MUST return a UriInterface instance .
*
* @ link http :// tools . ietf . org / html / rfc3986 #section-4.3
* @ return UriInterface Returns a UriInterface instance
* representing the URI of the request .
*/
public function getUri ();
/**
* Returns an instance with the provided URI .
*
* This method MUST 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 MUST 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` , this method interacts with the Host header in the following ways :
*
2017-04-13 15:53:35 +01:00
* - If the Host header is missing or empty , and the new URI contains
2015-08-27 12:03:05 -07:00
* a host component , this method MUST update the Host header in the returned
* request .
* - If the Host header is missing or empty , and the new URI does not contain a
* host component , this method MUST NOT update the Host header in the returned
* request .
* - If a Host header is present and non - empty , this method MUST NOT update
* the Host header in 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 .
*
* @ link http :// tools . ietf . org / html / rfc3986 #section-4.3
* @ param UriInterface $uri New request URI to use .
* @ param bool $preserveHost Preserve the original state of the Host header .
2017-04-13 15:53:35 +01:00
* @ return static
2015-08-27 12:03:05 -07:00
*/
public function withUri ( UriInterface $uri , $preserveHost = false );
}