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

x/oak/body.ts>Body

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

An object which encapsulates information around a request body.

Constructors

new
Body(serverRequest: Pick<ServerRequest, "request" | "headers" | "getBody">, reviver?: JsonReviver)

Properties

readonly
has: boolean

Is true if the request might have a body, otherwise false.

WARNING this is an unreliable API. In HTTP/2 in many situations you cannot determine if a request has a body or not unless you attempt to read the body, due to the streaming nature of HTTP/2. As of Deno 1.16.1, for HTTP/1.1, Deno also reflects that behavior. The only reliable way to determine if a request has a body or not is to attempt to read the body.

readonly
stream: ReadableStream<Uint8Array> | null

Exposes the "raw" ReadableStream of the body.

readonly
used: boolean

Returns true if the body has been consumed yet, otherwise false.

Methods

arrayBuffer(): Promise<ArrayBuffer>

Reads a body to the end and resolves with the value as an ArrayBuffer

blob(): Promise<Blob>

Reads a body to the end and resolves with the value as a Blob.

form(): Promise<URLSearchParams>

Reads a body as a URL encoded form, resolving the value as URLSearchParams.

formData(): Promise<FormData>

Reads a body to the end attempting to parse the body as a set of FormData.

init(): Promise<BodyInit | null>

Return the body to be reused as BodyInit.

json(): Promise<any>

Reads a body to the end attempting to parse the body as a JSON value.

If a JSON reviver has been assigned, it will be used to parse the body.

text(): Promise<string>

Reads the body to the end resolving with a string.

type(customMediaTypes?: Partial<Record<BodyType, string[]>>): BodyType

Attempts to determine what type of the body is to help determine how best to attempt to decode the body. This performs analysis on the supplied Content-Type header of the request.

Note these are not authoritative and should only be used as guidance.

There is the ability to provide custom types when attempting to discern the type. Custom types are provided in the format of an object where the key is on of BodyType and the value is an array of media types to attempt to match. Values supplied will be additive to known media types.

The returned value is one of the following:

  • "binary" - The body appears to be binary data and should be consumed as an array buffer, readable stream or blob.
  • "form" - The value appears to be an URL encoded form and should be consumed as a form (URLSearchParams).
  • "form-data" - The value appears to be multipart form data and should be consumed as form data.
  • "json" - The value appears to be JSON data and should be consumed as decoded JSON.
  • "text" - The value appears to be text data and should be consumed as text.
  • "unknown" - Either there is no body or the body type could not be determined.
[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