D 2011-09-23T22:13:19.964
L Creating\sResponses
U murphy
W 2725
Creating Responses
Each request handler is expected to return an instance of the response structure type that has a SRFI-99 definition similar to the following one:
(define-record-type (response message)
#f #t
status status-message)
A response is actually a subtype of a message (see [Interpreting Parameters]) and inherits its type, headers and body fields. In addition the message specifies the status code and status line message that should be returned to the webserver.
To create a response, you can use any of the following procedures:
(make-response STATUS BODY [#:type TYPE] [#:headers HEADERS] [#:status-message STATUS-MESSAGE]) => RESPONSE
Creates a message given a numeric STATUS code and a string BODY. Optionally you may specify a content TYPE (which you probably should, since the default is application/octet-stream), additional HEADERS or an explicit STATUS-MESSAGE (the default is derived from the STATUS code).
(collect-response STATUS THUNK [#:type TYPE] [#:headers HEADERS] [#:status-message STATUS-MESSAGE]) => RESPONSE
Works similar to make-response except that the message body is computed by invoking THUNK, which is expected to write the desired content to the current output port.
(make-html-response STATUS HTML [#:headers HEADERS] [#:status-message STATUS-MESSAGE]) => RESPONSE
Works similar to make-response except that the message body is derived from a HTML5 rendering of the X-expression HTML. This expression must be an ELEMENT according to the following grammar:
XEXPR = ELEMENT | CONTENT
ELEMENT = (list SYMBOL (list (list SYMBOL CONTENT ...) ...) XEXPR ...) ;; element optionally with attributes
| (list SYMBOL XEXPR ...) ;; element without attributes
CONTENT = STRING ;; character data
| SYMBOL ;; symbolic entity reference
| INTEGER ;; numeric entity reference
The content type of the resulting message is text/html.
(make-error-response STATUS MESSAGE [#:headers HEADERS] [#:status-message STATUS-MESSAGE]) => RESPONSE
Works similar to make-html-response but uses a predefined content document into which it only inserts the given error MESSAGE.
Z 03938da80112bef94ccc7a798b27268d