2022. 4. 10. 19:18ใBack-End ์์ ์ค/Node.js
๐ ์์ฒญ, ์๋ต ๊ฐ์ฒด
๐ฝ ์์ฒญ ๊ฐ์ฒด(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๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด์์.
๐ฝ ์๋ต ๊ฐ์ฒด (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 ๋์ด ๋ฒ๋ฆฌ๋ ๋ถํธํ ์ํฉ์ด ์๊ฒจ ๋ฒ๋ฆฌ๋ ๊ฒ์ด์์.
'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 |