After performing some kind of processing on input information, an application will then want to produce some kind of response to indicate what went on. Here are some examples of responses:
The procedure involved in generating a response usually involves the following steps:
The kind of code involved may well resemble the following:
from WebStack.Generic import ContentType class MyResource: def respond(self, trans): [Perform the requested operations.] if [the operation was successful]: trans.set_response_code(200) trans.set_content_type(ContentType("text/html", encoding="utf-8")) out = trans.get_response_stream() out.write([some data either as a plain string suitably encoded or as Unicode]) else: trans.set_response_code(500) # or some other code trans.set_content_type(ContentType("text/html", encoding="utf-8")) out = trans.get_response_stream() out.write([some other data either as a plain string suitably encoded or as Unicode])
As discussed in "Character Encodings", care must be taken generating the response so that it meets any expectations that browsers and other Web clients may have.
Transaction objects have various methods that can be used in generating responses:
set_response_code
200
status condition on the response,
meaning that the request was processed successfully.set_content_type
WebStack.Generic.ContentType
) which specifies both the
media type and the character encoding (if relevant) of the data sent to
the user. The media type describes the format of the data (eg.
text/html
- a Web page), whereas the character encoding
describes how any character information on the page is encoded - see "Character Encodings" for more
information.get_response_stream