在NextJS中搜索返回API响应的正确方法,可以得到各种各样的答案。我怀疑有些答案可能与从13.4之前到13.4的过渡有关。然而,我将分享我的实验,说明哪些方法有效,哪些方法值得推荐。
export async function GET(request) {
// WILL EXPERIMENT WITH THESE 6 return types in 13.4
return NextResponse.json({ message: 'Hello - GET' });
return NextResponse.status(200).json({ message: 'Hello - GET' });
return Response.json({ message: 'Hello - GET' });
return Response.status(200).json({ message: 'Hello - GET' });
return NextAPIResponse.json({ message: 'Hello - GET' });
return NextAPIResponse.status(200).json({ message: 'Hello - GET' });
}
字符串
我正在通过此testMethod接收响应
const testMethod = async () => {
const response = await fetch("/api/testNextJSAPI", {
method: "GET",
});
if (response.ok) {
console.log("OKAY");
} else {
console.log("ERROR");
}
};
型
2条答案
按热度按时间6l7fqoea1#
为了发送状态码,您需要将其放在第二个参数中
字符串
NextResponse和Response之间的区别在于NextResponse通过额外的便利方法扩展了Web Response API。因此,如果您没有任何特定需求,使用Web Response API就足够了。
参考:https://nextjs.org/docs/app/api-reference/functions/next-response#json
jtw3ybtb2#
在实验和交叉引用文档中,最好的方法是
字符串
我将在下面做具体的标记,因为它不是唯一一个实际工作的。Response和NextResponse都可以工作。注意,直接附加.status(200)在任何情况下都不起作用。
型
NextResponse和Response具有类似的行为并不令我感到惊讶,因为NextResponse扩展了Web Response API,如here文档所示。
我的理解是,NextAPIResponse是node的http.ServerResponse的专门扩展,它添加了一些帮助方法,使发送json(),设置cookie和发送不同的响应类型变得更容易。
和大图片,似乎
Pages Routing -> NextAPIResponse
和App Routing -> NextResponse
。然而,我想更高层次的看法,为什么这切换。