class Request: (source)
Known subclasses: twisted.web.proxy.ProxyRequest
, twisted.web.proxy.ReverseProxyRequest
, twisted.web.server.Request
Implements interfaces: twisted.internet.interfaces.IConsumer
, twisted.web.http._IDeprecatedHTTPChannelToRequestInterface
A HTTP request.
Subclasses should override the process() method to determine how the request will be processed.
Method | __eq__ |
Determines if two requests are the same object. |
Method | __hash__ |
A Request is hashable so that it can be used as a mapping key. |
Method | __init__ |
|
Method | __repr__ |
Return a string description of the request including such information as the request method and request URI. |
Method | addCookie |
Set an outgoing HTTP cookie. |
Method | connectionLost |
There is no longer a connection for this request to respond over. Clean up anything which can't be useful anymore. |
Method | finish |
Indicate that all response data has been written to this Request . |
Method | getAllHeaders |
Return dictionary mapping the names of all received headers to the last value received for each. |
Method | getClientAddress |
Return the address of the client who submitted this request. |
Method | getClientIP |
Return the IP address of the client who submitted this request. |
Method | getCookie |
Get a cookie that was sent from the network. |
Method | getHeader |
Get an HTTP request header. |
Method | getHost |
Get my originally requesting transport's host. |
Method | getPassword |
Return the HTTP password sent with this request, if any. |
Method | getRequestHostname |
Get the hostname that the HTTP client passed in to the request. |
Method | getUser |
Return the HTTP user sent with this request, if any. |
Method | gotLength |
Called when HTTP channel got length of content in this request. |
Method | handleContentChunk |
Write a chunk of data. |
Method | isSecure |
Return True if this request is using a secure transport. |
Method | loseConnection |
Pass the loseConnection through to the underlying channel. |
Method | noLongerQueued |
Notify the object that it is no longer queued. |
Method | notifyFinish |
Notify when the response to this request has finished. |
Method | parseCookies |
Parse cookie headers. |
Method | process |
Override in subclasses. |
Method | redirect |
Utility function that does a redirect. |
Method | registerProducer |
Register a producer. |
Method | requestReceived |
Called by channel when all data has been received. |
Method | setETag |
Set an entity tag for the outgoing response. |
Method | setHeader |
Set an HTTP response header. Overrides any previously set values for this header. |
Method | setHost |
Change the host and port the request thinks it's using. |
Method | setLastModified |
Set the Last-Modified time for the response to this request. |
Method | setResponseCode |
Set the HTTP response code. |
Method | unregisterProducer |
Unregister the producer. |
Method | write |
Write some data as a result of an HTTP request. The first time this is called, it writes out response data. |
Instance Variable | args |
A mapping of decoded query argument names as bytes to corresponding query argument values as list s of bytes . For example, for a URI with foo=bar&foo=baz&quux=spam as its query part args will be {b'foo': [b'bar', b'baz'], b'quux': [b'spam']}. |
Instance Variable | channel |
Undocumented |
Instance Variable | chunked |
Undocumented |
Instance Variable | client |
Undocumented |
Instance Variable | clientproto |
Undocumented |
Instance Variable | code |
Undocumented |
Instance Variable | code_message |
Undocumented |
Instance Variable | content |
A file-like object giving the request body. This may be a file on disk, an io.BytesIO , or some other type. The implementation is free to decide on a per-request basis. |
Instance Variable | cookies |
The cookies that will be sent in the response. |
Instance Variable | etag |
Undocumented |
Instance Variable | finished |
Undocumented |
Instance Variable | host |
Undocumented |
Instance Variable | lastModified |
Undocumented |
Instance Variable | method |
The HTTP method that was used, e.g. b'GET'. |
Instance Variable | notifications |
A list of Deferred s which are waiting for notification that the response to this request has been finished (successfully or with an error). Don't use this attribute directly, instead use the Request.notifyFinish method. |
Instance Variable | password |
Undocumented |
Instance Variable | path |
The encoded path of the request URI (not including query arguments), e.g. b'/a/b%20/c'. |
Instance Variable | producer |
Undocumented |
Instance Variable | queued |
Undocumented |
Instance Variable | received_cookies |
Undocumented |
Instance Variable | requestHeaders |
All received HTTP request headers. |
Instance Variable | responseHeaders |
All HTTP response headers to be sent. |
Instance Variable | sentLength |
Undocumented |
Instance Variable | startedWriting |
Undocumented |
Instance Variable | streamingProducer |
Undocumented |
Instance Variable | transport |
Undocumented |
Instance Variable | uri |
The full encoded URI which was requested (including query arguments), e.g. b'/a/b%20/c?q=v'. |
Instance Variable | user |
Undocumented |
Method | _authorize |
Undocumented |
Method | _cleanup |
Called when have finished responding and are no longer queued. |
Instance Variable | _disconnected |
A flag which is False until the connection over which this request was received is closed and which is True after that. |
Instance Variable | _forceSSL |
Undocumented |
Instance Variable | _log |
A logger instance for request related messages. |
Returns | |
A int based on the instance's identity. |
twisted.web.proxy.ProxyRequest
, twisted.web.proxy.ReverseProxyRequest
, twisted.web.server.Request
Parameters | |
channel | the channel we're connected to. |
queued | (deprecated) are we in the request queue, or can we start writing to the transport? |
Set an outgoing HTTP cookie.
In general, you should consider using sessions instead of cookies, see twisted.web.server.Request.getSession
and the twisted.web.server.Session
class for details.
Parameters | |
k:bytes or str | cookie name |
v:bytes or str | cookie value |
expires:bytes or str | cookie expire attribute value in "Wdy, DD Mon YYYY HH:MM:SS GMT" format |
domain:bytes or str | cookie domain |
path:bytes or str | cookie path |
max_age:bytes or str | cookie expiration in seconds from reception |
comment:bytes or str | cookie comment |
secure:bool | direct browser to send the cookie on encrypted connections only |
httpOnly:bool | direct browser not to expose cookies through channels other than HTTP (and HTTPS) requests |
sameSite:None , bytes or str | One of None (default), 'lax' or 'strict'. Direct browsers not to send this cookie on cross-origin requests. Please see: https://tools.ietf.org/html/draft-west-first-party-cookies-07 |
Raises | |
ValueError | If the value for sameSite is not supported. |
twisted.web.server.Request
Request
.Return dictionary mapping the names of all received headers to the last value received for each.
Since this method does not return all header information, self.requestHeaders.getAllRawHeaders() may be preferred.
Return the address of the client who submitted this request.
This may not be a network address (e.g., a server listening on a UNIX domain socket will cause this to return UNIXAddress
). Callers must check the type of the returned address.
Returns | |
IAddress | the client's address. |
Present Since | |
18.4 |
Return the IP address of the client who submitted this request.
This method is deprecated. Use getClientAddress
instead.
Returns | |
str | the client IP address |
Parameters | |
key:bytes | The name of the cookie to get. |
Returns | |
bytes or None | The value of the specified cookie, or None if that cookie was not present in the request. |
Get my originally requesting transport's host.
Don't rely on the 'transport' attribute, since Request objects may be copied remotely. For information on this method's return value, see twisted.internet.tcp.Port
.
Return the HTTP password sent with this request, if any.
If no password was supplied, return the empty string.
Returns | |
bytes | the HTTP password, if any |
Returns | |
bytes | the requested hostname |
See Also | |
IRequest.getRequestHostname |
Return the HTTP user sent with this request, if any.
If no user was supplied, return the empty string.
Returns | |
bytes | the HTTP user, if any |
twisted.web.server.Request
Called when HTTP channel got length of content in this request.
This method is not intended for users.
Parameters | |
length | The length of the request body, as indicated by the request headers. None if the request headers do not indicate a length. |
Return True
if this request is using a secure transport.
Normally this method returns True
if this request's HTTPChannel
instance is using a transport that implements interfaces.ISSLTransport
.
This will also return True
if Request.setHost
has been called with ssl=True.
Returns | |
bool | True if this request is secure |
Notify the object that it is no longer queued.
We start writing whatever data we have to the transport, etc.
This method is not intended for users.
In 16.3 this method was changed to become a no-op, as Request
objects are now never queued.
Returns | |
Deferred | A Deferred which will be triggered when the request is finished -- with a None value if the request finishes successfully or with an error if the request is interrupted by an error (for example, the client closing the connection prematurely). |
Note | |
There are some caveats around the reliability of the delivery of this notification.
|
twisted.web.proxy.ProxyRequest
, twisted.web.proxy.ReverseProxyRequest
, twisted.web.server.Request
Override in subclasses.
This method is not intended for users.
Called by channel when all data has been received.
This method is not intended for users.
Parameters | |
command:bytes | The HTTP verb of this request. This has the case supplied by the client (eg, it maybe "get" rather than "GET"). |
path:bytes | The URI of this request. |
version:bytes | The HTTP version of this request. |
Set an entity tag for the outgoing response.
That's "entity tag" as in the HTTP/1.1 ETag header, "used for comparing two or more entities from the same requested resource."
If I am a conditional request, I may modify my response code to NOT_MODIFIED
or PRECONDITION_FAILED
, if appropriate for the tag given.
Parameters | |
etag:string | The entity tag for the resource being returned. |
Returns | |
If I am a If-None-Match conditional request and the tag matches one in the request, I return http.CACHED to indicate that you should write no body. Otherwise, I return a false value. |
Parameters | |
name:bytes or str | The name of the header for which to set the value. |
value:bytes or str | The value to set for the named header. A str will be UTF-8 encoded, which may not interoperable with other implementations. Avoid passing non-ASCII characters if possible. |
Change the host and port the request thinks it's using.
This method is useful for working with reverse HTTP proxies (e.g. both Squid and Apache's mod_proxy can do this), when the address the HTTP client is using is different than the one we're listening on.
For example, Apache may be listening on https://www.example.com/, and then forwarding requests to http://localhost:8080/, but we don't want HTML produced by Twisted to say b'http://localhost:8080/', they should say b'https://www.example.com/', so we do:
request.setHost(b'www.example.com', 443, ssl=1)
Parameters | |
host:bytes | The value to which to change the host header. |
port | Undocumented |
ssl:bool | A flag which, if True, indicates that the request is considered secure (if True, isSecure will return True). |
Set the Last-Modified time for the response to this request.
If I am called more than once, I ignore attempts to set Last-Modified earlier, only replacing the Last-Modified time if it is to a later value.
If I am a conditional request, I may modify my response code to NOT_MODIFIED
if appropriate for the time given.
Parameters | |
when:number | The last time the resource being returned was modified, in seconds since the epoch. |
Returns | |
If I am a If-Modified-Since conditional request and the time given is not newer than the condition, I return http.CACHED to indicate that you should write no body. Otherwise, I return a false value. |
twisted.web.server.Request
Parameters | |
data:bytes | Some bytes to be sent as part of the response body. |
twisted.web.server.Request
io.BytesIO
, or some other type. The implementation is free to decide on a per-request basis.list
of Deferred
s which are waiting for notification that the response to this request has been finished (successfully or with an error). Don't use this attribute directly, instead use the Request.notifyFinish
method.