axios NextResponse返回500服务器间错误

zpf6vheq  于 2023-04-30  发布在  iOS
关注(0)|答案(1)|浏览(172)

我正在尝试从next/server使用NextResponse。当我调用API时,我得到一个状态500和内部服务器错误。条件。if (response.status === 202)为true,可以进入if块。

export async function POST(request: NextRequest) {
  let body = await request.json();
  console.log(body);
  if (process.env.URL_FILE_SERVICE_CREATE_CATEGORY) {
    axios.post(process.env.URL_FILE_SERVICE_CREATE_CATEGORY)
      .then(response => {
        if (response.status === 202) {
          return NextResponse.json({ hello: 'Next.js' })
        }
      })
      .catch(err => {
        if (err.response.status === 409) {
          return NextResponse.json({ message: "conflict" }, { status: 409 });
        } else {
          return NextResponse.json({ message: "Error" }, { status: 500 });
        }
      });
  }
}
ippsafx7

ippsafx71#

代码片段的问题是 www.example.com 。在返回响应之前要解决或拒绝的帖子。这可能会导致意外的行为,因为响应可能会在Promise被解析或拒绝之前发送。另一方面,下面的代码片段在axios之前包含一个return语句。post调用,确保函数在返回响应之前等待Promise被解析或拒绝。这是一个更好的实现,因为它保证只有在Promise被解析或拒绝时才发送响应。

`export async function POST(request: NextRequest) {
  let body = await request.json();
  
  if (process.env.URL_FILE_SERVICE_CREATE_CATEGORY) {
  return  axios.post(process.env.URL_FILE_SERVICE_CREATE_CATEGORY)
      .then(response => {
        if (response.status === 202) {
          return NextResponse.json({ hello: 'Next.js' }, { status: 409 })
        }
      })
      .catch(err => {
        if (err.response.status === 409) {
          return NextResponse.json({ message: "conflict" }, { status: 409 });
        } else {
          return NextResponse.json({ message: "Error" }, { status: 500 });
        }
      });
  }
}
`

相关问题