개인공부
[Next.js] 13.4.16에서 api 처리 시 겪은 에러 핸들링
bmanerdaniel
2023. 8. 17. 19:06
반응형
Next.js 12버전을 사용해오다가, 대규모 업데이트가 된 지금 12를 계속 사용하는 것에는 문제가 있다고 판단하여 새로운 프로젝트에서는 13버전을 사용하기로 결정. 아래는 api를 적용하면서 겪었던 문제를 해결한 방법이다.
어떤 유튜브 동영상에는 root > pages > api 폴더를 생성하고 파일이름도 route로 하지 않아도 api 자체를 만들 수 있었지만 최신 버전에서는 유효하지 않다.
우선 app > api > 설정 directory name > route.js 혹은 route.ts 안에 GET, POST, PUT 과 같이 METHOD 별로 함수이름을 정해야지만 서버 개발이 가능
함수 이름을 아무렇게나 해도 작동했었던 것과 달라서 기초적인 것이었지만 찾는데 오래걸렸음
front 단에서 post로 data를 보내면 예전에는 다른 조치없이 볼 수 있었는데, formData로 조회해야함
export async function POST(req) {
const formData = await req.formData();
const client = await connectDB;
const db = client.db("sth");
const title = formData.get("title");
const description = formData.get("description");
const content = formData.get("content");
if (req.method == "POST") {
let result = await db.collection("content").insertOne({
title,
description,
content,
uploaded: false,
});
return NextResponse.json(result);
}
}
구글에 검색해보니, req.json()를 해서 구조분해할당하면 body를 열람할 수 있다고하는데 개소리 였음. req.json()을 해도
next.js 13.4.16 error syntaxerror: unexpected token i in json at position 1 라는 에러가 계속 발생해서, 공식문서 뒤졌는데 아래 링크 부분 발견
공식문서가 짱
반응형