NextJS-middleware

김종민·2022년 8월 23일
0

apple-market

목록 보기
32/37


NextJS middleware에 대해서 알아본다.
밑에꺼는 구버젼 문법인데,
업그레이드 되면서 문법이 바뀜ㅜㅜㅜㅜㅜㅜ
그래도 밑의 부분을 이해하고 있으면,
업그레이드 버젼도 이해할 수 있을거라 봄.

https://nextjs.org/docs/messages/middleware-relative-urls
https://nextjs.org/docs/advanced-features/middleware
https://github.com/vercel/next.js/tree/canary/examples/middleware
https://nextjs.org/docs/messages/returning-response-body-in-middleware
https://nextjs.org/docs/messages/middleware-upgrade-guide

root폴더에서 middleware.ts 파일을 생성

import { NextFetchEvent, NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'

export function middleware(req: NextRequest, ev: NextFetchEvent) {
  // if (req.cookies) {
  //   const url = req.nextUrl.clone()
  //   url.pathname = '/enter'
  //   return NextResponse.rewrite(url)
  // }

  if (!req.url.includes('/api')) {
    if (!req.url.includes('/enter') && !req.cookies.applemarket) {
      return NextResponse.redirect('/enter')
    }
  }
  ///url설정을 안하면, 모든 경로 및 API에 적용되는 middleware가 됨.
  ///위에꺼는 예시, session이 없으면, /enter로 redirect되게 설정

  return NextResponse.json({ ok: true })
  ///response를 하는 형식, 반드시 return, NextResponse 형식이로~

  if (req.nextUrl.pathname.startsWith('/profile')) {
    console.log('it works! This is Profile')
  }
  ///url중 /profile로 시작되는 path에 대해서만 적용되는 middleware
  
  if (req.nextUrl.pathname.startsWith('/chat')) {
    console.log('it works! This is chat')
  }
   ///url중 /chat 시작되는 path에 대해서만 적용되는 middleware
}
profile
코딩하는초딩쌤

0개의 댓글