readBody()
Reads and parses the request body inside a server event handler.
Syntax
const body = await readBody(event) Parameters
| Name | Type | Required | Description |
|---|---|---|---|
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.