Skip to main content
ServerResponse - node__http.d.ts - Node documentation
class ServerResponse

Usage in Deno

```typescript import { ServerResponse } from "node:node__http.d.ts"; ```
This object is created internally by an HTTP server, not by the user. It is passed as the second parameter to the `'request'` event.

Constructors

new
ServerResponse(req: Request)

Type Parameters

Properties

statusCode: number
When using implicit headers (not calling `response.writeHead()` explicitly), this property controls the status code that will be sent to the client when the headers get flushed. ```js response.statusCode = 404; ``` After response header was sent to the client, this property indicates the status code which was sent out.
When using implicit headers (not calling `response.writeHead()` explicitly), this property controls the status message that will be sent to the client when the headers get flushed. If this is left as `undefined` then the standard message for the status code will be used. ```js response.statusMessage = 'Not found'; ``` After response header was sent to the client, this property indicates the status message which was sent out.
If set to `true`, Node.js will check whether the `Content-Length` header value and the size of the body, in bytes, are equal. Mismatching the `Content-Length` header value will result in an `Error` being thrown, identified by `code:``'ERR_HTTP_CONTENT_LENGTH_MISMATCH'`.

Methods

assignSocket(socket: Socket): void
detachSocket(socket: Socket): void
writeContinue(callback?: () => void): void
Sends an HTTP/1.1 100 Continue message to the client, indicating that the request body should be sent. See the `'checkContinue'` event on `Server`.
writeEarlyHints(
hints: Record<string, string | string[]>,
callback?: () => void,
): void
Sends an HTTP/1.1 103 Early Hints message to the client with a Link header, indicating that the user agent can preload/preconnect the linked resources. The `hints` is an object containing the values of headers to be sent with early hints message. The optional `callback` argument will be called when the response message has been written. **Example** ```js const earlyHintsLink = '; rel=preload; as=style'; response.writeEarlyHints({ 'link': earlyHintsLink, }); const earlyHintsLinks = [ '; rel=preload; as=style', '; rel=preload; as=script', ]; response.writeEarlyHints({ 'link': earlyHintsLinks, 'x-trace-id': 'id for diagnostics', }); const earlyHintsCallback = () => console.log('early hints message sent'); response.writeEarlyHints({ 'link': earlyHintsLinks, }, earlyHintsCallback); ```
writeHead(
statusCode: number,
statusMessage?: string,
): this
Sends a response header to the request. The status code is a 3-digit HTTP status code, like `404`. The last argument, `headers`, are the response headers. Optionally one can give a human-readable `statusMessage` as the second argument. `headers` may be an `Array` where the keys and values are in the same list. It is _not_ a list of tuples. So, the even-numbered offsets are key values, and the odd-numbered offsets are the associated values. The array is in the same format as `request.rawHeaders`. Returns a reference to the `ServerResponse`, so that calls can be chained. ```js const body = 'hello world'; response .writeHead(200, { 'Content-Length': Buffer.byteLength(body), 'Content-Type': 'text/plain', }) .end(body); ``` This method must only be called once on a message and it must be called before `response.end()` is called. If `response.write()` or `response.end()` are called before calling this, the implicit/mutable headers will be calculated and call this function. When headers have been set with `response.setHeader()`, they will be merged with any headers passed to `response.writeHead()`, with the headers passed to `response.writeHead()` given precedence. If this method is called and `response.setHeader()` has not been called, it will directly write the supplied header values onto the network channel without caching internally, and the `response.getHeader()` on the header will not yield the expected result. If progressive population of headers is desired with potential future retrieval and modification, use `response.setHeader()` instead. ```js // Returns content-type = text/plain const server = http.createServer((req, res) => { res.setHeader('Content-Type', 'text/html'); res.setHeader('X-Foo', 'bar'); res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('ok'); }); ``` `Content-Length` is read in bytes, not characters. Use `Buffer.byteLength()` to determine the length of the body in bytes. Node.js will check whether `Content-Length` and the length of the body which has been transmitted are equal or not. Attempting to set a header field name or value that contains invalid characters will result in a \[`Error`\]\[\] being thrown.
writeHead(
statusCode: number,
): this
Sends a HTTP/1.1 102 Processing message to the client, indicating that the request body should be sent.