Project

General

Profile

Request » History » Version 3

Version 2 (Elmer de Looff, 2012-04-23 17:26) → Version 3/23 (Elmer de Looff, 2012-04-27 09:39)

h1. Request

The @Request@ request object is an abstraction of in µWeb makes sure each request from the incoming HTTP request. This allows one simple interface that is browser, independent of coming from a mod_python instance or the underlying [[standalone]] server that µWeb runs on (either [[Standalone]] using BaseHTTPServer, or [[Apache]] mode on @mod_python@). looks the same.

From PageMaker methods, You can reach the request object inside a [[pagemaker]] by using the self.req variable.
It
is accessible presented as the @self.req@ member. The request an object contains all with the information about the incoming request: query arguments, post data, cookies and environment data. It is also the place where you define outgoing cookies and

following members:

* env
* headers

h2. Post vars

POST arguments can be found under: self.post and should be accessed by issueing a 'getfirst()', or 'getlist()' call for the desired key.
self.post.getfirst() allows for a second argument to set a default if the desired key isn't set by the browser

<pre>
<code class="html">
argA = self.post.getfirst('argA')
argB = self.post.getfirst('argB', 'empty')

if 'argA' in self.post:
#pass, argA has been send by the browser

</code>
</pre>

h2. Get vars

GET arguments can be found under: self.get, they work the same as POST vars.

h2. Cookies

self.cookies contains the cookies send by the browser, as the interface to create them from the server.

h3. Retrieving a cookie
You can fetch the content of cookie by accessig the self.cookie dict with the name of the desired cookie as its key.
The returned cookie object has a value member containing the actual value of the requested cookie.
<pre>
<code class="python">
self.cookies['sample'].value
</code>
</pre>

h2. ENV

The env variable is a dictionary containing the following items;
* CONTENT_TYPE
* CONTENT_LENGTH
* HTTP_COOKIE
* HTTP_HOST
* HTTP_REFERER
* HTTP_USER_AGENT
* PATH_INFO
* QUERY_STRING
* REMOTE_ADDR
* REQUEST_METHOD
* UWEB_MODE 'STANDALONE' / 'MOD_PYTHON'

h3. Extended env
If more detail is required about the environment, you can issue a call to the self.req.ExtendedEnvironment() method, which will inject more details into the env var. This is a much slower operation than the normal env call, so that's why its tucked away in a separate method.

* AUTH_TYPE
* CONNECTION_ID
* DOCUMENT_ROOT
* RAW_REQUEST
* REMOTE_HOST
* REMOTE_USER
* SERVER_NAME
* SERVER_PORT
* SERVER_LOCAL_NAME
* SERVER_LOCAL_IP
* SERVER_PROTOCOL

And in case of a @mod_python@ setup you will also get:
* MODPYTHON_HANDLER
* MODPYTHON_INTERPRETER
* MODPYTHON_PHASE