Skip to main content
Deno 2 is finally here 🎉️
Learn more
Module

x/oak/response.ts>Response

A middleware framework for handling HTTP with Deno, Node, Bun and Cloudflare Workers 🐿️ 🦕
Very Popular
Latest
class Response
import { Response } from "https://deno.land/x/oak@v17.1.2/response.ts";

An interface to control what response will be sent when the middleware finishes processing the request.

The response is usually accessed via the context's .response property.

Example

import { Application, Status } from "jsr:@oak/oak/";

const app = new Application();

app.use((ctx) => {
  ctx.response.body = { hello: "oak" };
  ctx.response.type = "json";
  ctx.response.status = Status.OK;
});

Constructors

new
Response(request: Request, jsonBodyReplacer?: (key: string, value: unknown) => unknown)

Properties

The body of the response. The body will be automatically processed when the response is being sent and converted to a Uint8Array or a Deno.Reader.

Automatic conversion to a Deno.Reader occurs for async iterables.

headers: Headers

Headers that will be returned in the response.

status: Status

The HTTP status of the response. If this has not been explicitly set, reading the value will return what would be the value of status if the response were sent at this point in processing the middleware. If the body has been set, the status will be 200 OK. If a value for the body has not been set yet, the status will be 404 Not Found.

type: string | undefined

The media type, or extension of the response. Setting this value will ensure an appropriate Content-Type header is added to the response.

readonly
writable: boolean

A read-only property which determines if the response is writable or not. Once the response has been processed, this value is set to false.

Methods

addResource(resource: { close(): void; }): void

Add a resource to the list of resources that will be closed when the request is destroyed.

destroy(closeResources?): void

Release any resources that are being tracked by the response.

redirect(url: string | URL): void

Sets the response to redirect to the supplied url.

If the .status is not currently a redirect status, the status will be set to 302 Found.

The body will be set to a message indicating the redirection is occurring.

redirect(url: REDIRECT_BACK, alt?: string | URL): void

Sets the response to redirect back to the referrer if available, with an optional alt URL if there is no referrer header on the request. If there is no referrer header, nor an alt parameter, the redirect is set to /.

If the .status is not currently a redirect status, the status will be set to 302 Found.

The body will be set to a message indicating the redirection is occurring.

toDomResponse(): Promise<globalThis.Response>
with(response: globalThis.Response): void

Instead of responding based on the values of the response, explicitly set the response with a Fetch API Response.

If the response is already finalized, this will throw. You can check the .writable property to determine the state if you are unsure.

[!NOTE] This will ignore/override values set in the response like the body, headers and status, meaning things like cookie management and automatic body typing will be ignored.

with(body?: BodyInit | null, init?: ResponseInit): void

Instead of responding based on the values of the response, explicitly set the response by providing the initialization to create a Fetch API Response.

If the response is already finalized, this will throw. You can check the .writable property to determine the state if you are unsure.

[!NOTE] This will ignore/override values set in the response like the body, headers and status, meaning things like cookie management and automatic body typing will be ignored.

[Symbol.for("Deno.customInspect")](inspect: (value: unknown) => string): string
[Symbol.for("nodejs.util.inspect.custom")](
depth: number,
options: any,
inspect: (value: unknown, options?: unknown) => string,
): any