방명록
- [Next.js] 인프런 강의 "Next.js 필수 개발 가이드 3시간 완성!" 정리(API Endpoints)2024년 02월 13일 11시 47분 03초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
📌 API Endpoints
- Next.js 앱 내부에서 HTTP 요청, 응답 처리 가능
- API Folder Convention은 API 엔드포인트의 그룹화와 체계적 관리에 유용
- api폴더 원하는 API 경로에 해당하는 폴더(여기에서는 users)를 생성하고 그 폴더 안에 route.tsx 파일 생성(page.tsx와 함께 있을 수 없음)
// src/app/api/users/route.tsx import { NextRequest, NextResponse } from "next/server"; // GET 핸들러에 인자값이 없는 경우 응답 결과를 캐싱함 // export function GET() { // 캐싱을 원하지 않는 경우 request 속성을 매개 변수로 추가 export function GET(request: NextRequest) { return NextResponse.json([ { id: 1, name: "a" }, { id: 2, name: "b" }, ]); }
📌 Dynamic Routes와 API Endpoints
// src/app/api/users/[id]/route.tsx import { NextRequest, NextResponse } from "next/server"; export function GET( request: NextRequest, // 첫번째 인수 요청 처리 { params }: { params: { id: number } } // 두번째 인수 params ) { if (params.id > 10) { return NextResponse.json({ error: "Use Not Found" }, { status: 404 }); // 에러 상태 코드 2번째 인수로 보냄 } return NextResponse.json({ id: 1, name: "김일남" }); }
📌 POST
// src/app/api/users/route.tsx // (생략) export async function POST(request: NextRequest) { const body = await request.json(); // request.json()은 promise를 리턴하기 때문에 async/await 사용 if (!body.name) { return NextResponse.json({ error: "Name is required" }, { status: 404 }); } return NextResponse.json({ id: 1, name: body.name }); } /* 윈도우 curl을 이용한 요청 테스트 요청 명령 : curl -d "{""name"":""kim""}" -H "Content-Type: application/json" -X POST http://localhost:3000/api/users 요청 결과 : {"id":1,"name":"kim"} */
📌 PUT
- PUT : 전체 데이터 업데이트
- PATCH : 일부 데이터 업데이트
// src/app/api/users/[id]/route.tsx export async function PUT( request: NextRequest, { params }: { params: { id: number } } ) { const body = await request.json(); if (!body.name) { return NextResponse.json({ error: "Name is required" }, { status: 404 }); } if (params.id > 10) { return NextResponse.json({ error: "User Not Found" }, { status: 404 }); } return NextResponse.json({ id: 1, name: body.name }); } /* 윈도우 curl을 이용한 요청 테스트 요청 명령 : curl -d "{""name"":""lee""}" -H "Content-Type: application/json" -X PUT http://localhost:3000/api/users/1 요청 결과 : {"id":1,"name":"lee"} */
📌 DELETE
// src/app/api/users/[id]/route.tsx export function DELETE( request: NextRequest, { params }: { params: { id: number } } ) { if (params.id > 10) { return NextResponse.json({ error: "User Not Found" }, { status: 404 }); } return NextResponse.json({}); } /* 윈도우 curl을 이용한 요청 테스트 요청 명령 1 : curl -X DELETE http://localhost:3000/api/users/11 요청 결과 1 : {"error":"User Not Found"} 요청 명령 2 : curl -X DELETE http://localhost:3000/api/users/1 요청 결과 2 : {} */
728x90반응형'언어·프레임워크 > Next.js' 카테고리의 다른 글
[Next.js] 인프런 강의 "Next.js 필수 개발 가이드 3시간 완성!" 정리(Prisma) (0) 2024.02.13 [Next.js] [Next.js] 인프런 강의 "Next.js 필수 개발 가이드 3시간 완성!" 정리(Zod를 이용한 유효성 검사) (0) 2024.02.13 [Next.js] 인프런 강의 "Next.js 필수 개발 가이드 3시간 완성!" 정리(컴포넌트 오류 처리) (0) 2024.02.11 [Next.js] 인프런 강의 "Next.js 필수 개발 가이드 3시간 완성!" 정리(not-found) (0) 2024.02.11 [Next.js] 인프런 강의 "Next.js 필수 개발 가이드 3시간 완성!" 정리(Loading UI) (0) 2024.02.11 다음글이 없습니다.이전글이 없습니다.댓글