我正在尝试使用新的Nextjs 13 route handlers沿着使用TypeScript的Prisma创建一些基本的crud操作。
这就是我的POST请求处理程序的样子:
export async function POST(req: NextRequest) {
const clientData: clientToCreate = req.body;
try {
const data = await prisma.client.create({
data: clientData,
});
return NextResponse.json(data);
} catch (e) {
console.error(e);
return NextResponse.error(e);
}
}
这里的req.body是ReadableStream<Uint8Array> | null
,我不知道如何解析它以访问其中的数据。当我尝试执行req.body.json()时,我得到:Property 'json' does not exist on type 'ReadableStream<Uint8Array>'
。
以下是我如何构造我的请求:
interface ApiRequest {
url: string;
method: "GET" | "POST" | "PUT" | "DELETE";
params?: Object;
}
const getRequestUrl = (url: string) => {
return `${process.env.BASE_API_URL}/${url}`;
};
const defaultHeaders = {
Accept: "application/json; charset=UTF-8",
"Content-Type": "application/json",
};
export const apiRequest = async (request: ApiRequest) => {
return await fetch(getRequestUrl(request.url), {
headers: defaultHeaders,
method: request.method,
body: request?.params ? JSON.stringify(request.params) : undefined,
})
.then((response) => response.json())
.catch((e) => {
console.error(e);
throw e;
});
};
然后我所做的就是使用postman来发送一个POST请求,该请求的头部与上面看到的头部完全相同。我的要求错了吗?我想不出是哪里出了错。
先谢谢你。
1条答案
按热度按时间8aqjt8rx1#
要获取正文内容:
如果使用request.body,它将返回一个ReadableStream对象