๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋…์ •๋ฆฌ/AI QnA

NEXT.js import NextApiRequest / NextRequest ์ฐจ์ด์ 

by ์†ก๋‘๋ถ€ 2024. 6. 14.
728x90
๋ฐ˜์‘ํ˜•

Q. 

import { NextApiRequest, NextApiResponse } from "next"

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

import ์ฐจ์ด?

 

 

CAHT.

Next.js์˜ app ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์šฐํŒ… ๋ฐฉ์‹๊ณผ pages ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์šฐํŒ… ๋ฐฉ์‹์€ ์•ฝ๊ฐ„ ๋‹ค๋ฅด๋‹ค. ๊ฐ ๋ผ์šฐํŒ… ๋ฐฉ์‹์—์„œ ์‚ฌ์šฉ๋˜๋Š” import ๋ฌธ๋„ ๋‹ค๋ฅด๋‹ค. ์ด ๋‘ ๊ฐœ์˜ import ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

1. NextApiRequest์™€ NextApiResponse (Pages ๋””๋ ‰ํ† ๋ฆฌ)

NextApiRequest์™€ NextApiResponse๋Š” Next.js์˜ pages ๋””๋ ‰ํ† ๋ฆฌ์—์„œ API ๋ผ์šฐํŠธ๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์ด ๋ฐฉ์‹์€ Next.js 12 ์ด์ „๋ถ€ํ„ฐ ์‚ฌ์šฉ๋˜๋˜ ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์ด๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ (pages/api/example.js)

import { NextApiRequest, NextApiResponse } from 'next';

export default function handler(req = NextApiRequest, res = NextApiResponse) {
  res.status(200).json({ message: 'Hello from API Route in pages!' });
}
  • NextApiRequest: Next.js์˜ req ๊ฐ์ฒด๋กœ, Node.js์˜ IncomingMessage๋ฅผ ํ™•์žฅํ•œ ๊ฐ์ฒด์ด๋‹ค.
  • NextApiResponse: Next.js์˜ res ๊ฐ์ฒด๋กœ, Node.js์˜ ServerResponse๋ฅผ ํ™•์žฅํ•œ ๊ฐ์ฒด์ด๋‹ค.

์ด ๋ฐฉ์‹์€ Next.js 13 ์ดํ›„์—๋„ pages ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.

2. NextRequest์™€ NextResponse (App ๋””๋ ‰ํ† ๋ฆฌ)

NextRequest์™€ NextResponse๋Š” Next.js 13์—์„œ ๋„์ž…๋œ ์ƒˆ๋กœ์šด app ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์šฐํŒ… ๋ฐฉ์‹์ด๋‹ค. ์ด ๋ฐฉ์‹์€ React Server Components๋ฅผ ์ง€์›ํ•˜๋ฉฐ, pages ๋””๋ ‰ํ† ๋ฆฌ์™€๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ (app/api/example/route.js)

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

export async function GET(req = NextRequest) {
  return NextResponse.json({ message: 'Hello from API Route in app!' });
}
  • NextRequest: Next.js์˜ req ๊ฐ์ฒด๋กœ, Web API์˜ Request ๊ฐ์ฒด๋ฅผ ํ™•์žฅํ•œ ๊ฐ์ฒด์ด๋‹ค.
  • NextResponse: Next.js์˜ res ๊ฐ์ฒด๋กœ, Web API์˜ Response ๊ฐ์ฒด๋ฅผ ํ™•์žฅํ•œ ๊ฐ์ฒด์ด๋‹ค.

์ด ๋ฐฉ์‹์€ Next.js์˜ ์ตœ์‹  ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉฐ, app ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

์ฃผ์š” ์ฐจ์ด์  ์š”์•ฝ

  • ๋ผ์šฐํŠธ ์ •์˜ ์œ„์น˜:
    • NextApiRequest์™€ NextApiResponse: pages ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‚ฌ์šฉ.
    • NextRequest์™€ NextResponse: app ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‚ฌ์šฉ.
  • ํ™•์žฅ๋œ ๊ฐ์ฒด:
    • NextApiRequest/NextApiResponse: Node.js์˜ IncomingMessage์™€ ServerResponse๋ฅผ ํ™•์žฅ.
    • NextRequest/NextResponse: Web API์˜ Request์™€ Response๋ฅผ ํ™•์žฅ.
  • ์‚ฌ์šฉ ํŒจํ„ด:
    • NextApiRequest/NextApiResponse: ์ „ํ†ต์ ์ธ Node.js ์Šคํƒ€์ผ์˜ API ๋ผ์šฐํŠธ.
    • NextRequest/NextResponse: ์ตœ์‹  Next.js์˜ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ API ๋ผ์šฐํŠธ.

Next.js 13 ์ดํ›„์—๋Š” app ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์‹  ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค. ์ด๋Š” React์˜ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ์™€ ๋” ๋‚˜์€ ํ†ตํ•ฉ์„ ์ œ๊ณตํ•˜๊ณ , ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋‚˜ ์ „ํ†ต์ ์ธ ๋ผ์šฐํŒ… ๋ฐฉ์‹์„ ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด pages ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๊ฒฐ๋ก 

import { NextApiRequest, NextApiResponse } from "next"  > page route

import { NextRequest, NextResponse } from "next/server"  > app route

728x90
๋ฐ˜์‘ํ˜•

'๊ฐœ๋…์ •๋ฆฌ > AI QnA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

SQL ON UPDATE CASCADE : ์™ธ๋ž˜ํ‚ค ์—ฐ๊ฒฐ ์‹œ ๋™๊ธฐํ™”  (0) 2024.06.20

๋Œ“๊ธ€