如何使用新的NextRequest和NextResponse向外部API发送POST请求?

9jyewag0  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(303)

我很难发出一个post请求,因为我的代码在我的Next.js应用程序的服务器端没有解析任何body。我觉得我把服务器端API搞错了。
我使用Next.js 13的Route Handersapp目录。这是我的客户端代码的样子:

const redirectToCheckout = async () => {
  const response = await fetch("/api/stripe", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ email: change }),
  }).then((res) => res.json());
  console.log(response);
};

字符串
服务器端看起来像这样:

import { NextRequest, NextResponse } from "next/server";
import Stripe from "stripe";

const stripe = new Stripe(process.env.STRIPE_SECRETE_KEY);

export async function POST() {
  const customer = await stripe.customers.create({
    email: NextRequest.body,
  });

  return NextResponse.json({ customer });
}

jum4pzuy

jum4pzuy1#

当你从客户端发送JSON时,你需要解析请求正文,并获取Stripe调用所需的数据:

import { NextResponse } from "next/server";
import Stripe from "stripe";

const stripe = new Stripe(process.env.STRIPE_SECRETE_KEY);

export async function POST(request) {
  const data = await request.json();
  const customer = await stripe.customers.create({
    email: data.email,
  });

  return NextResponse.json({ customer });
}

字符串
注意request是由Next.js作为参数传递给您的。不需要进口任何东西。

相关问题