About
Resume
About
Resume

const { currentProjectId } = useProjectStore() if (currentProjectId === 'abc123') { // 프로젝트 A용 데이터 페칭 } else if (currentProjectId === 'def456') { // 프로젝트 B용 데이터 페칭 }
/dashboard?project-id=abc123export function middleware(request: NextRequest) { const acceptLanguage = request.headers.get("accept-language") || "ko"; const isAuthenticated = request.cookies.get("ATAD_ACCESS_TOKEN"); const { pathname, searchParams } = request.nextUrl; // 로그인 리다이렉트 처리 if (isAuthenticated && pathname.startsWith("/login")) { return NextResponse.redirect(new URL("/", request.url)); } const userLang = acceptLanguage.split(",")[0]; // 프로젝트 ID 쿼리 스트링 유지 로직 const projectIdFromQuery = searchParams.get("project-id"); const projectIdFromCookie = request.cookies.get("project-id")?.value; let response = NextResponse.next(); // 1. 쿼리에 project-id가 있으면 쿠키에 저장 if (projectIdFromQuery) { response.cookies.set("project-id", projectIdFromQuery, { path: "/", maxAge: 60 * 60 * 24 * 7, // 7일 }); } // 2. 쿼리에 없지만 쿠키에 있으면 URL에 추가해서 리다이렉트 else if (projectIdFromCookie && !searchParams.has("project-id")) { const url = request.nextUrl.clone(); url.searchParams.set("project-id", projectIdFromCookie); response = NextResponse.redirect(url); } // 3. 쿼리에도 없고 쿠키에도 없다면 추후 데이터 페칭으로 처리 // 사용자의 프로젝트 리스트와 기본 선택값을 가져올 예정 // 필요시 여기서 기본값으로 리다이렉트 처리도 가능 else if (!projectIdFromQuery && !projectIdFromCookie) { // 현재는 데이터 페칭으로 처리하도록 통과 // const url = request.nextUrl.clone(); // url.searchParams.set("project-id", "default-project"); // response = NextResponse.redirect(url); } response.headers.set("x-user-lang", userLang); return response; } export const config = { matcher: ["/((?!api|_next/static|_next/image|.*\\.png$).*)"], };
/dashboard/dashboard?project-id=abc123const searchParams = useSearchParams(); const projectId = searchParams.get("project-id") as ProjectType; console.log("projectId", projectId); // abc123, def456, ghi789 등
useSearchParamssearchParamsexport default function Dashboard({ searchParams }: { searchParams: { "project-id": string } }) { const projectId = searchParams["project-id"]; // 프로젝트별 데이터 페칭 const data = await fetchProjectData(projectId); return <div>{/* UI 렌더링 */}</div>; }
/dashboard/dashboard?project-id=abc123/settingsabc123/settings?project-id=abc123def456/dashboard?project-id=def456def456
"여러 소셜 플랫폼에서 가끔 나오는 이야기인 개발자의 위기" 그건 아니라 생각했지만 아마 나도 모르게 AI시대에 개발자로써의 위기감을 느끼는 것 같다.

코딩이라는 행위 자체가 변하고 있다.

너무나 편파적인 기사들을 AI를 활용하여 도출한 정치 성향 수치로 시각적으로 나타내어 사용자에게 더 현명한 판단을 주는 뉴스 플랫폼입니다.