This object is created internally by UB server and passed as the second
argument to the endpoint's
methods or as a third argument to the entity level method's called using rest
endpoint.
It represents an in-progress HTTP response. Response body is buffered during calls to write until writeEnd is called. Actual headers and response will be sent after endpoint handler finished.
Do not forget to set the statusCode to 200 on success or use a helper's badRequest / notFound on errors.
TODO To send file content as a response without loading file into memory the following code can be used:
// Replace this comments by JSDocs style comment
// param {THTTPRequest} req
// param {THTTPResponse} resp
function getPublicDocument(req, resp){
resp.statusCode = 200;
resp.writeHead('Content-Type: !STATICFILE\r\nContent-Type: text/plain'); // !STATICFILE is a special content type - will be removed from headers by server during sending
resp.writeEnd('c:\\myFilesWithPasswords.txt');
}
# new THTTPResponse ()
Members
# statusCode instance
Response HTTP status code
# statusCode instance
Methods
# badRequest (reasonopt: string) → boolean instance
Write an HTTP 400 Bad Request response. Return false
Arguments:
reason
: stringIf specified will be written to log as error
# getBodyForDebug () → string instance
For DEBUG PURPOSE ONLY Retrieve a response body created by writeEnd call
# notFound (reasonopt: string) → boolean instance
Write an HTTP 404 Not Found response. Return false
Arguments:
reason
: stringIf specified will be written to log as error
# notImplemented (reasonopt: string) → boolean instance
Write an HTTP 501 'Not Implemented response. Return false
Arguments:
reason
: stringIf specified will be written to log as error
# validateETag () instance
ETag based HTTP response caching. Must be called after writeEnd called and and statusCode is defined.
In case statusCode === 200 and response body length > 64 will
- if request contains a IF-NONE-MATCH header, and it value equal to response crc32 will mutate a statusCode to 304 (not modified) and clear the response body
- in other case will add a ETag header with value = hex representation of crc32(responseBody).
# write (data: ArrayBuffer | Object | String, encodingopt: String) instance
Write to source.
Arguments:
data
: ArrayBuffer| Object| StringData to write. If Object - it stringify before write
encoding
: StringEncode data to
encoding
before write. Default toutf-8
in case data is String orbin
in case data is ArrayBuffer. One of "utf-8"|"ucs2"|"bin"|"base64"|"base64toBin".base64toBin
applicable only if data is Buffer alike
# writeBinaryBase64 (base64Data: string) instance
Write base64 encoded data as a binary representation (will decode from base64 to binary before write to response)
Arguments:
base64Data
: string
# writeEnd (data: ArrayBuffer | object | string, encodingopt: string) instance
Write to internal buffer and set buffer content as HTTP response. See {UBWriter.wrote} for parameter details
Arguments:
data
: ArrayBuffer| object| stringencoding
: string
# writeHead (header: string) instance
Add response header(s). Can be called several times for DIFFERENT header.
Can write several headers at once - in this case usa \r\n
as separator
Arguments:
header
: stringOne header or
\r\n
separated headers
resp.writeHead('Content-Type: text/css; charset=UTF-8\r\nOther-header: value')