QueenCards / ProjectAnalysis

플젝뿌셔
1 stars 0 forks source link

[29] 미들웨어에 대해서 설명해주세요. 사용 경험이 있다면 구현 방식을 설명해주세요. #32

Closed hyeyoonS closed 1 month ago

hyeyoonS commented 1 month ago

📎 질문

미들웨어에 대해서 설명해주세요. 사용 경험이 있다면 구현 방식을 설명해주세요.

✏ 구술 답변 키워드

✏ 서술 답변

Next.js에서 middleware의 역할

middleware는 요청(request)이 수행되기 이전에 실행되는 코드입니다. Request객체와 Response객체에 접근할 수 있어 Request에 따라 Response를 rewriting, redirecting, modifying 할 수 있습니다.

middleware는 캐쉬된 컨텐츠 이전에 실행되며 매 라우트마다 호출됩니다.

middleware를 사용하면 성능, 보안 그리고 사용자 경험을 향상시킬 수 있습니다.

활용 요소

주의할 점

middleware를 사용한 이유

import { NextRequest, NextResponse } from "next/server";

export async function middleware(request: NextRequest) {
  const accessToken = request.cookies.get("accessToken");
  const path = request.nextUrl.pathname;

  if (accessToken) {
    if (path === "/" || path.startsWith("/login") || path.startsWith("/signup")) return NextResponse.redirect(new URL("/home", request.url));

    if (accessToken is expired) {
      //accessToken만료일경우
      const response = NextResponse.next();
      const newAccessToken = await getRefreshToken();
       response.cookies.set("accessToken", newAccessToken);
       return response;
      }
    }

export const config = {
  matcher: ["/((?!api|_next/static\\/?).*)"],
};

middleware는 최상위 폴더에 middleware.ts(.js) 파일을 만들어 사용합니다. middleware 파일은 1개만 사용 가능합니다.