[MEMO APP] Back-end/์๋ฒ๊ตฌ์ถ (1)
๐จnodemon ์ค์
์ด์ ์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์๋ฒ์์ค๋ node๋ฅผ ์ด์ฉํด์ ํด๋น ํ์ผ์ ์ง์ ์คํ์์ผ์ฃผ์์ต๋๋ค.
์ด๋ฐ๋ฐฉ์์ ์คํ์ ๊ฐ๋ฐํ ๋ ์กฐ๊ธ ๋ถํธํ? ๊ท์ฐฎ์? ์ผ์ด ์๊น๋๋ค.
์ฐ๋ฆฌ๊ฐ ์๋ฒ๋ฅผ ์คํ์์ผ๋ ์ํ์์ ํน์ ์์ค๋ฅผ ์ถ๊ฐํ๋ค๊ฑฐ๋ ์์ ํ ๋ ์ด์ ๊ณผ ์ดํ์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ฌ๋ผ์ง๊ฒ ์ฃ ? ํ์ง๋ง ์๋ฒ๋ฅผ ๋ค์ ์ฌ ์คํ์ํค์ง ์๋๋ค๋ฉด ์ฐ๋ฆฌ๊ฐ ์ถ๊ฐํ ๋ด์ญ์ด ์๋ฒ์ ๋ฐ์๋์ด์ง์ง ์์ต๋๋ค.
์ด๋ฌํ ์์ค์ฝ๋ ์์ ์ฌ๋ถ์ ๋ํ์ฌ ๊ฐ์งํ๊ณ ์๋ฒ๋ฅผ ์ฌ ์คํ์์ผ์ฃผ๋๊ฒ์ ๋๋๊ฒ์ด nodemon์ ์ญํ ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ์ง๊ธ๋ถํฐ ํด๋น ๋ชจ๋์ ์ค์นํด๋ณด๋๋ก ํ์ฃ ! ( yarn add nodemon )
์ด์ ์๋ฒ๋ฅผ ์คํ์ํฌ๋ node nodemon --watch src/ src/index.js ๋ก ์คํํ๋ฉด ์์ ๋ด์ญ์ด ๋ฐ์์ด ๋์ด์ง๋๋ค. ใ ใ
( ๋งค๋ฒ ์๋ฒ๋ฅผ ์คํํ๋ ค๋... ์คํ๋ฌธ์ด ๋๋ฌด ๊ธธ์ด ๊ท์ฐฎ๋ค์ )
์ด๋ ๊ฒ ์คํ๋ฌธ์ด ๊ธด๊ฒ๋ค์ ์ฐ๋ฆฌ๊ฐ ์ด์ ์ ๋ง๋ค์ด๋์๋ package.json์์ ๋งคํฌ๋ก์ฒ๋ผ ์งง์ ๋ฌธ์ฅ์ผ๋ก ๋์ฒด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
package.json ํ์ผ์ ์ด์ด๋ณด๋ฉด scripts๋ผ๋ ํค๋ฅผ ๊ฐ์ง ๊ณณ์ด ๋ณด์ผ๊ฒ์ ๋๋ค.
๊ทธ๊ณณ์ ๋ค์์ ๋ด์ฉ์ ์ถ๊ฐํ๋๋กํ์ฃ
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start:dev": "nodemon --watch src/ src/index.js"
},
์ด์ ์คํ์์ yarn start:dev ํน์ npm run start:dev๋ก ์คํ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
๐จ ๋ณด์๊ด๋ จ ๋ฏธ๋ค์จ์ด dotenv, koa-helmet ์ค์น
์ฐ๋ฆฌ๊ฐ ๋ง๋๋ ์๋น์ค๋ค์ ์น์์์ ํน์ ์ ์ ์ ์์ฒญ์ ๋ฐ๊ณ ๊ทธ์๋ํ ์๋ต์ ํด์ฃผ๋ ๋ฐฉ์์ ์๋น์ค์ ๋๋ค. ์ด๋ฌํ ๊ณผ์ ์์ ์ ์์ ์ธ sql๋ฌธ์ฅ์ ๋ณด๋ด์ฌ DB๋ด์ ํผ๋์ ์ผ๊ธฐ์ํค๊ฑฐ๋ ์ฐ๋ฆฌ๊ฐ ์ฃผ๊ณ ๋ฐ๋ ์๋ต ๋ฉ์์ง๋ฅผ ์ํํด์ ์ ์์ ์ผ๋ก ์ฌ์ฉํ๋ ์ฌ๋๋ค์ด ์์ต๋๋ค.
์ด๋ฅผ ์ํด์ ์ค์ํ ๋ด์ฉ์ ๋ฐ๋ก ์จ๊ธฐ๊ฑฐ๋, ๊ธฐ๋ณธ์ ์ธ ๋ณด์์ ์ํ ํ๋ก๊ทธ๋จ๋ค์ ๊ตฌ์ถํด์ผ ์ฐ๋ฆฌ์ ์๋ฒ ๋ฟ๋ง ์๋๋ผ ์ฐ๋ฆฌ์ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ค์ ์์ ํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๊ทธ๋์ ์ฒซ๋ฒ์งธ๋ก ํด์ค์ผ์ dotenv์ ๋๋ค.
dotenv๋ ์ค์ํ ์์ค ๊ฐ๋ น ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ port๋ฒํธ๋ ๋์ค์ ์ฌ์ฉํ ์ํธํ๋ pw๋ฅผ ๋ง๋ค๋ ์ฌ์ฉ๋์ด์ง๋ key๊ฐ๋ฑ์ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค.
์ผ๋จ ์ค์นํด๋ณด๋๋ก ํ์ฃ , yarn add dotenv ํด์ค์๋ค.
์ค์น๊ฐ ์๋ฃ๋์๋ค๋ฉด, ์ฐ๋ฆฌ๊ฐ ์ด์ ์ ๋ง๋ค์๋ src ํด๋์ ๊ฐ์๊ฒฝ๋ก ์์ .env ํ์ผ์ ๋ง๋ค์ด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ์์ ์ฐ๋ฆฌ๊ฐ ์์ผ๋ก ์ฌ์ฉํ ์๋ฒ ํฌํธ๋ฅผ ์ฑ์๋ฃ์ด์ฃผ๊ฒ ์ต๋๋ค.
PORT = 4000
๊ทธ๋ฆฌ๊ณ ๋ค์ index.js๋ก ๋์์์ ์์ค์ฝ๋๋ฅผ ์กฐ๊ธ ์์ ํด์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ .env ์ ์์ฑํ ์ฝ๋๋ค์ ๋ค๋ฅธ ํน์ ํ์ผ์์ ๋ถ๋ฌ๋ค ์ฐ๊ธฐ ์ํด์๋ dotenv ๋ชจ๋์ import ํด์ฃผ์ด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ๋ค์์ ์ฝ๋๋ฅผ index.js ์๋จ์ ์์ฑํด์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
// ํ๊ฒฝ๋ณ์๋ฅผ ๋ถ๋ฌ์ต๋๋ค.
require('dotenv').config();
const {
PORT: port
} = process.env;
์ด์ ์ ์ฌ์ฉํ๋ const port = 4000 ์ด ์ฝ๋๋ ์ง์ฐ๊ณ .env์ ์์ฑํ PORT ๋ณ์๋ฅผ ๊ฐ์ ธ์์ port๋ผ๋ ์๋ฌธ์์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ ์ฌ์ฉํด ๋์ฒดํ์ต๋๋ค.
์ด๋ฐ์์ผ๋ก ์๋จ์ require('dotenv').config(); ๋ฅผ ์์ฑํด์ฃผ๊ฒ ๋๋ฉด process.env์์ ์ฐ๋ฆฌ๊ฐ .env์์ ์์ฑํด์ค ๋ณ์๋ค์ ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋๋ค.
(์ ์ด๋ ๊ฒ ํ๋๊ตฌ์? ๋์ค์ ํด์ปค๊ฐ ์์ค์ฝ๋๋ฅผ ์ด์ด๋ด๋ port๋ key์ ๊ฐ์ด ์ค์ํ ๊ฐ์ ๋ณผ์ ์๋๋ก ํ๊ธฐ ์ํด์ ์ ๋๋ค ใ ใ )
์ด์ ์ค์ํ ๊ฐ๋ค๋ ์จ๊ฒผ์ผ๋ ๋ณด์ ๋ชจ๋(๋ฏธ๋ค์จ์ด)๋ฅผ ์ค์นํ ์ฐ๊ฒฐํด ๋ณด์์.
์ฐ๋ฆฌ๊ฐ ๋ณด์์ ์ํด์ฌ์ฉํ ๋ชจ๋์ ๋ฐ๋ก helmet ์ ๋๋ค.
์ฌ์ค express๋ฅผ ์ด์ฉํด ๊ฐ๋ฐ์ ์กฐ๊ธ ํด๋ณธ ์น๊ตฌ๋ค์ด๋ผ๋ฉด helmet์ด ๋ญ์ง ๋ฐ๋ก ์๊บผ์์.
node.js๋ฅผ ์ด์ฉํด ์น์๋ฒ๋ฅผ ๊ฐ๋ฐํ ๋ ๊ฐํธํ๊ฒ ๊ธฐ๋ณธ์ ์ธ ๋ณด์์ค์ ์ ์ด ๋ชจ๋์ด ๋ค ๋งก์์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ฝค๋ ์ ๋ช ํ ๋ชจ๋์ ๋๋ค.
ํ์ง๋ง ์ฐ๋ฆฌ๋ koa์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ helmet์ ๋ฐ์ง ์์๊ป๋๋ค.
(์ด์ ์ฆ์จ, ๋ํผ์
์ด์ง๋ง koa๋ promise ๊ธฐ๋ฐ์ด๋ผ ๊ธฐ์กดhelmet๊ณผ ์ธํฐํ์ด์ค๊ฐ ๋ง์ง ์์์๊ฐ ์๋๊น... ์ถ์ต๋๋ค. ์ด๊ฒ ์๋๋ผ๋ฉด ๊ฐ๋ฅด์ณ์ฃผ์ธ์ ใ
ใ
)
๊ทธ๋ผ ์ค์น๋ฅผ ์งํํด ๋ด ์๋ค. yarn add koa-helmet ์ ํด์ฃผ์๊ณ index.js๋ฅผ ์ด์ด์ฃผ์ธ์.
๊ทธ ๋ค์์๋ ์ค์นํ ๋ชจ๋์ ์ฐ๋ฆฌ์ app์ ์ฐ๊ฒฐํด ์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ผ๋จ ์ค์นํ ๋ชจ๋์ ์๋จ์ ์๋์ ์์ค์ฝ๋๋ฅผ ์ถ๊ฐํ์ฌ ๋ถ๋ฌ์์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
const helmet = require('koa-helmet');
๊ทธ๋ค์ ํด์ค ์ฐ๊ฒฐ์์ ๋ ๋ง์ ํด์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
express ๋ koa ์์ ํน์ ๋ฏธ๋ค์จ์ด(=๋ชจ๋)์ ์ฐ๊ฒฐํด์ค๋๋ use๋ผ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
(์๋ฅผ๋ค์ด app.use(...) ์๊ฐ์ ํํ์ธ๊ฑฐ์ฃ )
๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ์ฐ๊ฒฐํด์ค ๋ฏธ๋ค์จ์ด๋ helmet ์ด๋๊น .use(helmet) ์ด ๋ ๊บผ๊ณ ์ด ๋ฏธ๋ค์จ์ด๋ ์ฐ๋ฆฌ๊ฐ ๋ง๋ค ์๋ฒ ์ ์ฒด์ ์ ์ฉ์ด ๋์ด์ ธ์ผ ํ๋ app์ ์ฐ๊ฒฐํด์ฃผ์ด์ผ ํฉ๋๋ค. ์ฆ app.use(helmet)์ด ๋๊ฒ ๋ค์.
// ๋ฏธ๋ค์จ์ด ์ฐ๊ฒฐ
app.use(helmet);
์, ๊ธฐ๋ณธ์ ์ธ ๋ณด์์ค์ ์ด ์๋ฃ๋์์ต๋๋ค. ๊ฐ์ฅ ๋ง์ด ์๋๋๋ ์น๋ณด์ ๊ณต๊ฒฉ์ ๋ํด ์ด์น๊ตฌ๊ฐ ๋์ฒ๋ฅผ ์ ๋์์ค๊ป๋๋ค.
์ด๋ฒ ํฌ์คํ ์ ์ฌ๊ธฐ์ ๋ง์น๊ณ , ๋ค์ํฌ์คํ ์์๋ router ์ค์ ์ ์ DB ์ฐ๊ฒฐ์ฒ๋ฆฌ๋ฅผ ๋จผ์ ํ๊ณ ๊ทธ ์ดํ์ router ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
todoList
* DB์ฐ๊ฒฐ / MongoDB
* Router ์ฐ๊ฒฐ
'Gorilla-Kim > Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MEMO APP] Back-end/ DB์ฐ๊ฒฐ (1) (0) | 2020.03.16 |
---|---|
[MEMO APP] Back-end/ ๋ผ์ฐํ (2) (0) | 2020.03.15 |
[MEMO APP] Back-end/์๋ฒ๊ตฌ์ถ (2), ๋ผ์ฐํ (1) (0) | 2020.03.13 |
[MEMO APP] Back-end/ํ๊ฒฝ์ค์ (2) (0) | 2020.03.12 |
[MEMO APP] Back-end/ํ๊ฒฝ์ค์ (1) (0) | 2020.03.12 |