[Next.js에 Private Route 관련문의]
안녕하세요. 강의 잘 보고 있습니다. 질문이 몇가지있어 문의드립니다.
1. Private Route 관련
로그인된 유저만 접근할 수 있는 페이지 라우팅 경로를 아래와 같이 만들어 볼려고 하는데
next-auth에 useSession, getServerSession 으로 페이지 마다 각각 접근 제한하는 방식 말고 app/my 폴더에서 하위에 모두 접근을 제한 하는 방식이 있는지 궁금하여 문의 드립니다.
app/my/profiles/page.tsx
app/my/membership/page.tsx
app/my/qna/page.tsx
2. API 공통 에러 처리 관련
API호출시 not-found.tsx를 사용해서 API 경로 404를 json으로 보내줄 수 있는지 궁금합니다.
그리고 app/api/test/route.ts 에서 각각 try catch로 익셉션을 체크 해서 http 500을 리턴하는 방식말고 middleware에서 공통으로 오류 처리를 할수 있는지 궁금합니다.
middleware.ts로 로그인 체크 하는 코드는 많이 검색이 되는데 공통으로 오류 처리는 검색이 딸려서 그런지 찾을수가 없네요.
답변 2
0
안녕하세요. 질문 감사합니다.
특정 라우팅 경로에 공통으로 똑같은 로직을 적용하고 싶을 때 template이나 layout을 활용하는 것으로 보입니다.(링크: https://nextjs.org/docs/app/building-your-application/routing/pages-and-layouts#templates) 다만 app directory 관련 내용까지 직접 개발해보고 답변드리긴 힘든 상황이라, 공식 문서상 파악한 내용으로만 답변드립니다🙏 Next.js에서 이제 막 개발된 기능이다보니, 관련 로직을 어떤 식으로 어떤 파일에 넣는 것이 좋은지까지 정립이 된지는 모르겠네요. 직접 시도해보는 것이 가장 좋을 것 같습니다!
404 관련 -> 무슨 뜻인지 명확히 이해하지 못했습니다. 단순히 404 페이지로 이동하는 것이라면 next api response의 redirect 기능을 사용하면 될 것으로 보입니다.
기존의 handler를 감싸는 wrapper 함수에게 오류 처리를 맡기는 방법이 있습니다. 코드로 예를 들면
function mockAPI() { // 실패하거나 성공하는 mock API
const random = Math.random();
if (random > 0.5) return Promise.resolve('John Doe');
return Promise.reject();
}
async function handler(
req: NextApiRequest,
res: NextApiResponse<Data>
) {
const response = await mockAPI(); // 에러 처리는 wrapper에게 맡기고, API 호출
res.status(200).json({ name: response }); // 정상적으로 동작시, 200 응답
}
export default async function wrapper(
req: NextApiRequest,
res: NextApiResponse<Data>
) {
try {
await handler(req, res); // handler를 실행
} catch {
res.status(400).json({ name: 'something wrong' }); // 오류 발생시 에러 처리
}
}다음과 같습니다. 하지만 이것도 질문을 명확하게 이해한 것은 아니라 원하시는 답변인지는 모르겠습니다.
app directory 관련 내용이기도 하고 코드가 없는 줄글 문의라 답변이 만족스럽지 못할 수 있다는 점 양해부탁드립니다🥲 감사합니다.
API 라우터를 사용해야 하는 경우에 대해
1
150
1
키보드 어떤 거 사용하시나요
1
352
1
next.js 멀티플 런타임 관련해서 질문 올립니다..
1
358
2
아주 기초적인 질문입니다.
1
322
1
서버사이드 렌더링을 할 때, 서버는 어디에 있는 건가요?
1
1170
2
수업을 듣다가 SSR에 관하여..
1
551
2
interface 와 type
1
376
1
엘리맨트들의 자식관계가 어떻게 이렇게 되나 궁금합니다.
1
384
1
onLoad함수 (script태그의 onLoad X)
1
426
1
dynamic에 대한 질문
1
447
1
SSR vs SSG
1
476
2
NoSSR 관련한 질문입니다:)
1
376
1
a tag 질문 !
1
327
2
8분 20초 배포 관련
1
324
2
안녕하세요! 구글 서치 콘솔에 등록하는 도중 다음 오류가 뜹니다
0
2678
2
emotion styles 파일이 빌드시 경고로 뜹니다.
1
438
1
naver map 이 출력되지 않습니다.
1
481
1
페이지에 site맵 존재시 next Link는 csr 처럼 싹가져오게 되나요?
1
264
2
Failed to load resource: the server responded with a status of 404 ()
1
1034
2
VSCode 익스텐션 궁금합니다.
1
356
1
상태관리 질문 있습니다!
1
449
1
swr에 대한 질문입니다. (용어 관련)
1
372
1
swr 질문입니다!
1
337
1
안녕하세요. span 태그의 부모에 display: flex 를 적용하는데 왜 적용되는지 아무리 생각해도 이해가 되지 않아 질문드립니다.
1
679
2





