반응형
middleware
middleware는 request가 완료되기 전에 실행된다. 그 후 들어오는 request에 따라 헤더를 다시 작성하거나 리다이렉트를 한다.
app폴더와 동일한 레벨에 두어야 한다.
app 폴더 안에 있으면 안된다.
// middleware.ts
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
// This function can be marked `async` if using `await` inside
export function middleware(request: NextRequest) {
return NextResponse.redirect(new URL('/home', request.url))
}
// See "Matching Paths" below to learn more
export const config = {
matcher: '/about/:path*',
}
위 코드는 /about/ 에 접근했을때 /home으로 리다이렉트 시키는 middleware.ts 이다.
경로 조건
Matcher
matcher에 해당하는 url에 접근할 때 실행된다.
export const config = {
matcher: '/about/:path*',
}
export const config = {
matcher: ['/about/:path*', '/dashboard/:path*'],
}
조건문
/about, /dashboard에 접근했을때 실행된다.
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
export function middleware(request: NextRequest) {
if (request.nextUrl.pathname.startsWith('/about')) {
return NextResponse.rewrite(new URL('/about-2', request.url))
}
if (request.nextUrl.pathname.startsWith('/dashboard')) {
return NextResponse.rewrite(new URL('/dashboard/user', request.url))
}
}
NextResponse
NextResponse API의 기능은 다음과 같다.
- redirect
- rewrite
- request의 헤더를 설정
- 응답 쿠키, 응답 헤더 설정
참고
https://nextjs.org/docs/app/building-your-application/routing/middleware#matching-paths
반응형
'개발 > Next.js' 카테고리의 다른 글
next-runtime-env 라이브러리 해부 (1) | 2024.12.26 |
---|---|
1분만에 auth 구현 할 수 있게 해주는 next-auth (0) | 2024.04.06 |
Next 서버 컴포넌트 이용시 보안 (0) | 2024.02.11 |
React Server Component (0) | 2023.10.12 |
Next App router에서 use client가 CSR을 뜻하지는 않는다. (0) | 2023.10.05 |