new THTTPResponse() #

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');
 }

Members

statusCode instance #

Response HTTP status code

statusCode instance #

Methods

badRequest(reasonopt : string)→boolean instance #

Write a HTTP 400 Bad Request response. Return false

Arguments info:

  • reason: string

    If 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 a HTTP 404 Not Found response. Return false

Arguments info:

  • reason: string

    If specified will be written to log as error

notImplemented(reasonopt : string)→boolean instance #

Write a HTTP 501 'Not Implemented response. Return false

Arguments info:

  • reason: string

    If 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, encodingopt : String) instance #

Write to source.

Arguments info:

  • data: ArrayBuffer

    Data to write. If Object - it stringify before write

  • encoding: String

    Encode data to encoding before write. Default to utf-8 in case data is String or bin in case data is ArrayBuffer. One of "utf-8"|"ucs2"|"bin"|"base64".

writeBinaryBase64(base64Data : String) instance #

Write base64 encoded data as a binary representation (will decode from base64 to binary before write to response)

writeEnd(data : ArrayBuffer, encodingopt : String) instance #

Write to internal buffer and set buffer content as HTTP response. See {UBWriter.wrote} for parameter details

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 info:

  • header: String

    One header or \r\n separated headers

Examples

    
        resp.writeHead('Content-Type: text/css; charset=UTF-8\r\nOther-header: value')