(설정 불필요) 추가 설정을 안 해도 된다.
(특징적 기능) 추가 설정으로도 불가능한 것이 가능하다.
Next.js
pages
디렉토리에 파일을 생성하면 해당 파일이 자동으로 URL 경로와 매핑한다.[param]
형태로 하여 동적 라우팅도 가능하다.다른 프레임워크에서 하려면
Next.js
pages/api
디렉토리에 파일을 생성해 API 엔드포인트를 만든다.// pages/api/hello.js
export default function handler(req, res) {
res.status(200).json({ message: 'Hello, world!' });
}
엔드포인트 예
GET /users - 모든 사용자 목록을 가져오는 요청
POST /users - 새로운 사용자를 생성하는 요청
GET /users/{id} - 특정 ID를 가진 사용자의 정보를 가져오는 요청
PUT /users/{id} - 특정 ID를 가진 사용자의 정보를 업데이트하는 요청
DELETE /users/{id} - 특정 ID를 가진 사용자를 삭제하는 요청
다른 프레임워크에서 하려면
// pages/index.js
export async function getServerSideProps() {
const res = await fetch('https://api.example.com/data');
const data = await res.json();
return { props: { data } };
}
export default function Home({ data }) {
return <div>{data.message}</div>;
}
Next.js
다른 프레임워크에서 하려면
Next.js
다른 프레임워크에서 하려면
Next.js
// 프로젝트 구조
my-next-app/
├── pages/
│ ├── index.js
│ ├── about.js
│ └── contact.js
// 빌드 후 파일 구조 (Next.js 애플리케이션)
// Next.js는 각 페이지를 별도의 JavaScript 청크로 분할
.next/
├── static/
│ ├── chunks/
│ │ ├── pages/
│ │ │ ├── index.js
│ │ │ ├── about.js
│ │ │ └── contact.js
다른 프레임워크에서 하려면
Next.js
// middleware.js
// 토큰이 없으면 로그인 페이지로 리다이렉트
export function middleware(req, ev) {
if (req.nextUrl.pathname.startsWith('/admin')) {
const **token = req.cookies.token;**
**if (!token) {**
return Response.**redirect(new URL('/login', req.url))**;
}
}
return Response.next();
}
다른 프레임워크에서 하려면
Next.js
다른 프레임워크에서 하려면
Next.js
touch tsconfig.json // tsconfig.json 파일을 생성
npm run dev // 개발 서버 실행, 패키지와 설정 파일들이 자동으로 설치되고 구성됨
npm install --save-dev typescript @types/react @types/node // TypeScript 설치
npm run dev // 개발 서버 실행, 패키지와 설정 파일들이 자동으로 설치되고 구성됨
다른 프레임워크
Next.js
다른 프레임워크