Next.js Discord

Discord Forum

How to get rawBody?

Answered
Artois Hound posted this in #help-forum
Open in Discord
Artois HoundOP
I had a working code setup to get the rawBody from import { NextApiRequest, NextApiResponse } from "next";

but now that import type { NextApiRequest, NextApiResponse } from 'next/types' is enforced, I just can't figure out how to get the raw body from it.

my previous solution was
let rawBody = Buffer.alloc(0)

    for await (const chunk of req) {
      rawBody = Buffer.concat([rawBody, chunk])
    }


with the bodyParser turned off
export const config = {
  api: {
    bodyParser: false
  }
}
Answered by nehalist
there's also a blog post that does that manually: https://vancelucas.com/blog/how-to-access-raw-body-data-with-next-js/
View full answer

11 Replies

what about request.text() within the route handler function?
@nehalist what about `request.text()` within the route handler function?
Artois HoundOP
Property 'text' does not exist on type 'NextApiRequest'.ts(2339)
what nextjs version are you using?
Artois HoundOP
14.2.4
according to the docs the type of request in route handlers should be Request, not NextApiRequest:

 
export async function GET(request: Request) {
  const rawBody = await request.text();
@nehalist according to the docs the type of `request` in route handlers should be `Request`, not `NextApiRequest`: export async function GET(request: Request) { const rawBody = await request.text();
Artois HoundOP
I am using Pages Directory https://nextjs.org/docs/pages/building-your-application/routing/api-routes

and it says
import type { NextApiRequest, NextApiResponse } from 'next'
as
export default function handler(
  req: NextApiRequest,
  res: NextApiResponse<ResponseData>
)
didn't know that. my knowledge with pages router is a bit out of date, but according to the docs https://www.npmjs.com/package/raw-body might be a solution
there's also a blog post that does that manually: https://vancelucas.com/blog/how-to-access-raw-body-data-with-next-js/
Answer
I tried it before, but I messed something up, but on a second run it's great.
Thanks m8 @nehalist 🙂