Next.js app目录下API路由处理器如何获取URL动态参数?
Next.js 13 App 目录 API 路由获取路径参数的正确方式
你的代码问题在于错误地从查询参数中获取sessionId,但实际你的请求URL是/api/stripe/${sessionId},其中sessionId是路径参数,对应路由文件api/stripe/[session]/route.js里的[session]占位符。
修正后的代码
import Stripe from "stripe"; import { NextResponse } from 'next/server'; // 注意:环境变量名拼写错误,应该是STRIPE_SECRET_KEY(SECRET而非SECRETE) const stripe = new Stripe(process.env.STRIPE_SECRET_KEY); export async function GET(req, { params }) { // 从路径参数中获取sessionId,对应路由里的[session]占位符 const sessionId = params.session; console.log(sessionId); try { const checkoutSession = await stripe.checkout.sessions.retrieve(sessionId); return NextResponse.json({ checkoutSession }); } catch (error) { // 增加错误处理,返回错误信息 return NextResponse.json({ error: error.message }, { status: 500 }); } }
关键说明
- 在Next.js 13 App目录的API路由中,路径参数通过
context.params获取,其中params的key对应路由文件名里的占位符(比如[session]对应params.session)。 - 你原代码里的
NextRequest.nextUrl.searchParams是用来获取查询参数的(比如/api/stripe?sessionId=xxx这种格式),和当前的路径参数场景不匹配。 - 修正了环境变量名的拼写错误,避免Stripe初始化失败。
内容的提问来源于stack exchange,提问作者morris menanya
相关产品推荐
相关产品推荐

