如何在Next.js 13 App Router的route.ts文件中读取请求体与查询参数?
Next.js 13 App Router 构建支持GET/POST的API路由
在Next.js 13的App Router模式下,你可以创建同时处理GET和POST请求的API端点,下面是完整实现示例,包含查询参数读取和请求体解析的逻辑:
处理GET请求(读取查询参数)
通过Request对象的URL提取查询参数,当参数不存在时返回默认值:
import { NextResponse } from "next/server"; export async function GET(req: Request) { const { searchParams } = new URL(req.url); // 获取查询参数,无参数时使用默认值 const queryParam = searchParams.get("param") || "default"; // 返回JSON响应 return NextResponse.json({ message: `Query param value is ${queryParam}` }); }
处理POST请求(解析请求体)
对于POST请求,通过req.json()解析请求体内容,示例如下:
export async function POST(req: Request) { try { // 解析请求体 const requestBody = await req.json(); // 处理业务逻辑,这里直接返回请求体内容 return NextResponse.json({ receivedData: requestBody }, { status: 200 }); } catch (error) { // 处理解析错误 return NextResponse.json({ error: "Invalid request body" }, { status: 400 }); } }
将上述代码放在app/api/[route-name]/route.ts文件中(替换[route-name]为你的路由名称),即可创建同时支持GET和POST的API端点。这类实现可以帮助你在Next.js应用中构建健壮且灵活的API服务,而官方文档中并未针对这类完整场景给出直接示例。
内容的提问来源于stack exchange,提问作者Pooja Mishra
相关产品推荐
相关产品推荐

