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

# new THTTPResponse ()


# statusCode instance

Response HTTP status code

# statusCode instance


# badRequest (reasonoptstring) → boolean instance

Write a HTTP 400 Bad Request response. Return false

  • 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 (reasonoptstring) → boolean instance

Write a HTTP 404 Not Found response. Return false

  • reason: string

    If specified will be written to log as error

# notImplemented (reasonoptstring) → boolean instance

Write a HTTP 501 'Not Implemented response. Return false

  • 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 (dataArrayBuffer | Object | String, encodingoptString) instance

Write to source.

  • data: ArrayBuffer| Object| String

    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 (base64DataString) instance

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


# writeEnd (dataArrayBuffer | Object | String, encodingoptString) instance

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


# writeHead (headerString) 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

  • header: String

    One header or \r\n separated headers

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