如何使用nextjs13.2中新的路由处理器?

ztmd8pv5  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(160)

我试图在nextjs中创建一个API,从Twelve Data API中获取历史股票数据。但我似乎无法弄清楚如何传入参数来检索特定股票和时间范围的信息这是我的代码:

export async function GET(request) {
  const { symbol, startDate, endDate } = request.body; // This is the problem. Dont know how to get this
  const apiKey = process.env.TWELVE_DATA_API_KEY;
  const url = `https://api.twelvedata.com/time_series?symbol=${symbol}&interval=1day&start_date=${startDate}&end_date=${endDate}&apikey=${apiKey}`
  const res = await fetch(url);
  const data = await res.json();
  return Response.json({data});
}

我正在测试API,方法是在应用程序运行时在Web浏览器中输入以下内容:*http://localhost:3000/API/库存信息?symbol=美国应用程序许可证和开始日期=2020年1月1日和2021年1月1日 *

li9yvcax

li9yvcax1#

应该是request.nextUrl.searchParams而不是request.body
现在,你会得到这样的结果:URLSearchParams { 'num' => '123' } .
为了将其转换为对象,您应该添加以下函数:

function paramsToObject(entries) {
 const result = {}
 for(const [key, value] of entries) { // each 'entry' is a [key, value] tupple
  result[key] = value;
 }
 return result;
}

然后:

const { symbol, startDate, endDate } = paramsToObject(request.nextUrl.searchParams.entries())

应该能像预期的那样工作,好好享受吧!

相关问题