Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- SQL
- JavaScript
- 정리
- Next.js
- 프런트엔드
- 자바
- 프론트엔드
- 쿼리
- jpa
- 서버
- BACK-END
- jsp
- 자바스크립트
- 디자인 패턴
- 코드테스트
- 스프링
- spring
- node.js
- 데이터베이스
- 코드 테스트
- 오라클
- java
- 스프링부트
- MySQL
- 프로그래머스
- 알고리즘
- 백엔드
- web
- 미니정리
- oracle
Archives
- Today
- Total
참치코더의 꿈 메모장
Next.js / 앱 라우터의 라우트 핸들러 미니정리 본문
728x90

라우트 핸들러는 리액트 프런트엔드인 Next.js를 API 서버처럼 사용하게 해주는 기능이다.
라우트 핸들러를 사용하기 위해서는 app 폴더 내에 만들고자 하는 백엔드 API 경로대로 폴더를 만들고
그 안에 route.js 또는 route.ts라는 파일을 만들어서 API와 관련된 코드를 작성하면 된다.
* page.js와 동일한 라우트 세그먼트 레벨에 route.js 파일이 존재하면 에러가 발생한다.
ex1 ) app/page.js , app/route.js -> 충돌 오류 발생!!!
ex2) app/api/route.js, app[user]/page.js -> 충돌 X
- 만약에 [user]에 동적으로 api가 들어간다면 Next.js는 우선순위를 줘서 정적 경로(api)가 동적 세그먼트보다 우선시 된다.
- 따라서 충돌이 발생하지 않고 app/api/route.js가 실행이 된다. (하지만 필터링을 하거나 해서 막는게 좋다..)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
// app/api/posts/[postId]/route.ts
import{ NextRequest, NextResponse} from 'next/server';
import samplePosts from '@/lib/contants/sampl-posts.json';
/*
타입스크립트의 interface를 사용해 동적인 url 파라미터의 값을 얻기 위해서 선언한다.
ex) app/api/posts/1
*/
interface RequestPayload {
params: Promise<{postId: string}>
}
export async function GET(request: NextRequest, payload: RequestPayload){
const {postId} = await payload.params; // 동적인 파라미터 값 받기
const post = samplePosts.find((data) => {
return data.id === postId; // JSON 데이터의 id값이 파라미터 입력값과 같은지 비교
});
if(!post){
return NextResponse.json('Not found', { // 값이 없을때 404 페이지 반환
status: 404,
});
return NextResponse.json(post, { // 값이 존재할때 200 상태 반환하면서 post값 반환
status : 200,
});
}
}
|
cs |
728x90
'Next.js' 카테고리의 다른 글
| Next.js / API 서버 호출 및 동시 호출 방법 정리(코드 위주) (0) | 2025.10.05 |
|---|---|
| Next.js / 기본적인 파일 기반 라우팅(폴더 구조), CSR VS SSR, 메타데이터 정리 (0) | 2025.10.02 |
| Next.js / 정적 메타 데이터 , 동적 메타 데이터 선언 방법 (0) | 2025.09.27 |
| Next.js / 페이지, 레이아웃, 템플릿 사용법 정리 (0) | 2025.09.25 |
| Next.js / 라우팅 기본 정리 (ver 12- , ver13+) 비교 (0) | 2025.09.20 |
Comments