readBody()

Reads and parses the request body inside a server event handler.

Since Nuxt 3.0 Spec ↗

Syntax

const body = await readBody(event)

Parameters

NameTypeRequiredDescription
event H3Event Yes The request event passed to the handler.

Returns

Promise<T> — The parsed body (JSON/urlencoded auto-detected).

Examples

// server/api/posts.post.ts
export default defineEventHandler(async (event) => {
  const body = await readBody<{ title: string }>(event)
  return await db.posts.create(body)
})
export default defineEventHandler(async (event) => {
  const body = await readBody(event)
  if (!body?.email) {
    throw createError({ statusCode: 400, statusMessage: 'email required' })
  }
  return { ok: true }
})

Notes

Parses JSON and URL-encoded bodies automatically based on Content-Type. Only call once per request. Validate the parsed body (e.g. with Zod) before trusting it. For multipart/form-data use `readMultipartFormData` instead.

See also