You can use Vercel Serverless Functions to recieve webhooks from third-party services like Stripe. Certain providers require access to the raw body inside the function to validate the signature from the request.
export async function POST(request: Request) { const rawBody = await request.text() return Response.json({ rawBody })}
You can verify your function can accept and parse raw bodies locally:
- Start your local development server with
vercel dev
(ornext dev
). - In another terminal window, run the
cURL
command below.
curl -X POST -H "Content-Type: text/plain" --data "This is raw data" http://localhost:3000/api/test
You should see a response like {"rawBody": "This is raw data"}
.