[Nest.js] API ์„ค๊ณ„ - ์š”์ฒญ, ์‘๋‹ต ๊ฐ์ฒด (Request, Response Object)

2022. 4. 10. 19:18ใ†Back-End ์ž‘์—…์‹ค/Node.js

728x90
๋ฐ˜์‘ํ˜•

 

 

๐Ÿš€ ์š”์ฒญ, ์‘๋‹ต ๊ฐ์ฒด

    ๐Ÿ”ฝ  ์š”์ฒญ ๊ฐ์ฒด(Request Object)

`Client`๊ฐ€ ๋ณด๋‚ธ `Request(์š”์ฒญ)`์—๋Š” ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํ•„์š”๋กœ ํ•  ๋•Œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”. ์˜ˆ๋ฅผ ๋“ค๋ฉด `Session ์ •๋ณด`, `Request Header ์ •๋ณด` ๋“ฑ์ด์—์š”. `Nest.js`์—์„œ๋Š” `Express.js`๋‚˜ `Fastify`์˜ ์š”์ฒญ ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด์—์š”. `@Res()` ์ฒ˜๋Ÿผ Handler์˜ ์‹œ๊ทธ๋‹ˆ์ณ์— Decorator๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ `Nest.js`์— ์ฃผ์ž…ํ•˜๋„๋ก ์„ ์–ธํ•˜์—ฌ ์š”์ฒญ ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

์˜ˆ์‹œ ์ฝ”๋“œ

๋งŒ์•ฝ `TypeScript`๋ฅผ ์ด์šฉํ•  ๊ฒฝ์šฐ ์œ„์˜ ์˜ˆ์ œ์ฒ˜๋Ÿผ `Express.js`์˜ `Request`๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด `@types/express` Package๋ฅผ ์„ค์น˜ ํ•ด์•ผ ๋˜๋Š” ๊ฒƒ์ด์—์š”.

`Request(์š”์ฒญ)` ๊ฐ์ฒด๋Š” Query ๋ฌธ์ž์—ด, ๋งค๊ฐœ ๋ณ€์ˆ˜, HTTP Header, HTTP Body์— ๋Œ€ํ•œ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

`Nest.js`์—๋Š” ์ด ์†์„ฑ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก `@Body()`, `@Query()` ๊ฐ™์€ Decorator๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

 

HTTP ๊ด€๋ จ Decorator

 

 

 

 

    ๐Ÿ”ฝ  ์‘๋‹ต ๊ฐ์ฒด (Response Object)

`Express.js`, `Fastify` ๋ณ„ ์‘๋‹ต์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”. `{Method Name}(@Res() response)`์™€ ๊ฐ™์ด `@Res()`๋ฅผ Method ์‹œ๊ทธ๋‹ˆ์ณ์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—์š”.

๐Ÿ’ก ์ฐธ๊ณ  ์‚ฌํ•ญ
Method ์‹œ๊ทธ๋‹ˆ์ณ

์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ํ•จ์ˆ˜ ์„œ๋ช… ํ˜น์€ ๋ฉ”์„œ๋“œ ์„œ๋ช…์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•จ์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋งํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋งˆ๋‹ค ์‹œ๊ทธ๋‹ˆ์ณ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๊ฐ€ ๋‹ค๋ฅด์ง€๋งŒ ๋Œ€์ฒด์ ์œผ๋กœ ์•„๋ž˜์˜ ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

  • ํ•จ์ˆ˜์˜ ์ด๋ฆ„
  • ๋งค๊ฐœ๋ณ€์ˆ˜(Parameter)์˜ ๊ฐœ์ˆ˜
  • (์˜ต์…”๋„) ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ž๋ฃŒํ˜•
  • (์˜ต์…”๋„) ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์˜ ์ž๋ฃŒํ˜•

์˜ต์…”๋„๋กœ ํ‘œ์‹œ๋œ ํ•ญ๋ชฉ๋“ค์€ ์ž๋ฃŒํ˜•์ด ์—†๋Š” ๋™์  ์–ธ์–ด์—์„œ๋Š” ํ•ด๋‹น์‚ฌํ•ญ์ด ์—†๋‹ค. ๋งŒ์•ฝ ๋‘ ํ•จ์ˆ˜์˜ ์ด๋ฆ„, ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜, ๊ทธ ํƒ€์ž…์ด ๋ชจ๋‘ ๊ฐ™๋‹ค๋ฉด ์ด ๋‘ ํ•จ์ˆ˜์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋Š” ๊ฐ™๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•

 

์ด๋ ‡๊ฒŒ ์ ‘๊ทผํ•˜๋ฉด `Express/Fastify`์˜ ๊ธฐ๋ณธ `Response` Method๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

์˜ˆ๋ฅผ ๋“ค์–ด `Express.js`๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด `response.status(200).send()`์™€ ๊ฐ™์ด HTTP Status Code 200์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

`Nest.js`์—์„œ๋Š” `@Res()`์™€ `Response()`๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ, `@Res()`๋Š” `@Response`์— ๋ณ„์นญ์ธ ๊ฒƒ์ด์—์š”.

๋‘ ๊ฐœ ๋ชจ๋‘ ๊ธฐ๋ณธ HHTP Plaform `Response` ๊ฐ์ฒด Interface๋ฅผ ์ง์ ‘ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์ด์—์š”.

๋งŒ์•ฝ Method Handler์—์„œ `@Res()`, `@Response()`๋ฅผ ์ด์šฉํ–ˆ๋‹ค๋ฉด `Nest.js`๋ฅผ ํŠน์ • `Library Mode`๋กœ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ `Response(์‘๋‹ต)` ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

์ด ๊ฒฝ์šฐ `res.json()`, `res.send()`๋ฅผ ํ†ตํ•ด ์ง์ ‘์ ์ธ ์‘๋‹ต์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด Server๊ฐ€ Down ๋˜์–ด ๋ฒ„๋ฆฌ๋Š” ๋ถˆํŽธํ•œ ์ƒํ™ฉ์ด ์ƒ๊ฒจ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด์—์š”.

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•

'Back-End ์ž‘์—…์‹ค > Node.js' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Node.js] NVM(Node Version Manager)  (4) 2022.04.15
[Nest.js] Middle Ware(๋ฏธ๋“ค์›จ์–ด)  (0) 2022.04.11
[Node.js][Nest.js] Logger ๊ธฐ๋Šฅ  (0) 2022.04.09
[Node.js][Nest.js]TypeORM  (0) 2022.04.09
[Node.js][Nest.js] Configuration (์„ค์ •)  (0) 2022.04.09