[MEMO APP] Back-end/์๋ฒ๊ตฌ์ถ (2), ๋ผ์ฐํ (1)
๐จ๐ป Git ignore ์ค์ / Router ์ค์
๐ Git ignore ์ค์
node๋ฅผ ์ด์ฉํด์ ๊ฐ๋ฐํ๋ค๋ณด๋ฉด Django๋ Railsํน์ Spring๊ณผ๋ ๋ค๋ฅด๊ฒ ๋จ์ ์ด์ ์ฅ์ ์ธ ํน์ง์ด ํ๊ฐ์ง ๋ฐ๊ฒฌ๋์ด์ง๋๋ค. ๊ทธ๊ฒ์ ์๋ก ์ถ๊ฐํ๊ฑฐ๋ ์ค์ ํด์ค์ผํ๋ module๋ค์ด ๋ง์์ง๋ค๋ ๊ฒ์ธ๋ฐ์.
์ ์ฅ์ ์ด๊ณ ๋จ์ ์ธ์ง ์์๋ณด๊ฒ ์ต๋๋ค.
Django์ ๋น๊ตํ์ฌ ์ค๋ช ํด๋ณด๋๋ก ํ์ฃ !
์ฅ๊ณ ๋ python์์ด์ฉํด ์น์ฑ์ ๋ง๋๋ ํ๋ ์์ํฌ์ ๋๋ค. Django๋ ์ค์นํ๋ ๊ทธ ์์ฒด๋ก ์น ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ธฐ์ํ ๊ฑฐ์ ๋๋ถ๋ถ์ ๊ฒ๋ค์ ๋ง๋ค์ด์ค๋๋ค.
( ๋ญ์ผ.. ๊ฐ์ฌ๊ธฐ์๋... )
ํ์ง๋ง ์ฅ์ ๋ ์์ง๋ง ๋จ์ ๋ ์กด์ฌํฉ๋๋ค. ๋ฐ๋ก ๊ธฐ์ด์ ์ผ๋ก ์ ๊ณต๋๋ ๊ธฐ๋ฅ๋ค์ด ์๋ ๋ง๊ธฐ๋๋ฌธ์ ์ด๋ฌํ ๊ธฐ๋ฅ๋ค์ ์ฐพ์ ์ตํ์ผ๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ณ ๋, ์ฌ์ฉํ์ง ์์์๋ ์ฐ๋ฆฌ์ ์ ์ฅ๊ณต๊ฐ์ ์ฐจ์งํ๋ค๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
(๋ณ๊ฐ๋ก ์ฅ๊ณ ๋ ํน์ฑ์์ฒด๋ก๋ ๋น๋๊ธฐ๋ฅผ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค ใ ใ .. ์ด๋ฅผ ์ถ๊ฐํด์ค๋ค๋ ์ด์ผ๊ธฐ๋ ์๋๊ตฐ์)
๊ทธ์๋นํด node๋ฅผ ์ด์ฉํ๋ express ๋ง์ดํฌ๋ก ์ฆ ์น์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ธฐ์ํ ์ต์ํ์ ๋ชจ๋์ ์ ๊ณตํฉ๋๋ค. ์ฌ๊ธฐ์ ๋ํด์ koa๋ ๋์ฑ๋ ์ ์ ๋ชจ๋์ ์ ๊ณตํด์ฃผ๊ตฌ์! ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ๋ถํฐ ํ์ํ ๋ชจ๋์ ์ฐ๋ฆฌ๊ฐ ๋ฑ๋ฑ ์ค์นํ๋ฉด๋๊ธฐ ๋๋ฌธ์ Custom์ด ์์ ๋ก์ด ํธ์ ๋๋ค.
(๋์ ์ ๊ฐ๋ฐ๊ธฐ๊ฐ์ด ๊ธธ๋ค๋ ๋จ์ ์ด... ์ฃผ๋ฅต)
๊ทธ๋ผ ์ด ์ด์ผ๊ธฐ๋ฅผ ์ ํ์๋๊ฐ... ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐ์ ํ๋ฉด์ ์ค์นํ๋ ํ๋ํ๋์ ๋ชจ๋์ ์์งํ ๊ทธ๋ ๊ฒ ํฐ ์ฉ๋์ ์ฐจ์งํ๋๊ฒ์ ์๋์ง๋ง, ๊นํ๋ธ์ ์ฌ๋ฆด๋๋ ํฌ๊ฒ ๋๊ปด์ง๊ณค ํฉ๋๋ค. ๊ทธ๋์ ๋ณดํต node๋ก ๊ฐ๋ฐํ ๋๋ ์ด๋ฌํ ๋ชจ๋๋ค์ ๊ฐ์ด ๊นํ์ ์ฌ๋ฆฌ์ง ์์ต๋๋ค.
์ด์ ์ฆ์จ, package.json์ ์ฐ๋ฆฌ๊ฐ ์ค์นํ ๋ชจ๋๋ค์ด ๊ธฐ๋ก์ด ๋์ด์๊ธฐ ๋๋ฌธ์ ์ด ํ์ผ๋ง ์๋ค๋ฉด npm install ํน์ yarn add ๋ก ๊ด๋ จ ๋ชจ๋๋ค์ ํ๋ฒ์ ์ค์น๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ github์ addํ ๋ ์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ ์ค์นํ ๋ชจ๋๋ค๊น์ง ์ธ์ํ์ง ์๋๋ก ๋ช๊ฐ์ง ์ค์ ์ ํด์ฃผ์ด์ผ ํ๋๋ฐ์, ๊ทธ๊ฒ์ ํด์ฃผ๋๊ฒ์ด ๋ฐ๋ก gitignore์ ๋๋ค.
๋ฐฉ๋ฒ์ ๊ฐ๋จํฉ๋๋ค.
ํ๋ก์ ํธ ์ต์๋จ ๊ฒฝ๋ก์ .gitignore ํ์ผ์ ๋ง๋ค์ด์ฃผ์ธ์. .env ํ์ผ๋์ฒ๋ผ ํ์ผ๋ช ์์ . ์ ๋ถ์ด๋๊ฒ์ ์์ง ๋ง์๊ธธ๋ฐ๋๋๋ค ใ ใ
์์ฑ์ด ์๋ฃ๋์๋ค๋ฉด ํด๋น ํ์ผ์ ์ด์ด ์๋์ ๋ด์ฉ์ ์ฑ์์ฃผ๋๋ก ํ ๊ฒ์. ์๋์ ๋ด์ฉ์ google์ gitignore ๊ฒ์ํ๋ฉด ๋์ค๋๊ฒ์ ๋ฐ์ทํ๊ฒ์ด๋๋๋ค. ๋ณดํต default๋ก ๋ง์ด ์ฌ์ฉํด์!
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
์ ์ด๋ ๊ฒ ์์ผ๋ก ๊น์ ์ฌ๋ฆด๋๋ ๋ชจ๋์ ์ฌ๋ฆฌ์ง ์์ผ๋ ๋นจ๋ฆฌ๋นจ๋ฆฌ ์ ๋ก๋๊ฐ ๋๊ฒ ๋ค์ ๐
๐ Router ์ค์ ํ๊ธฐ
์ผ๋จ ์์ ํ๊ฒฝ์ค์ ์์ koa๋ฅผ ์ค์นํ ๋ koa-router๋ ๊ฐ์ด ์ค์น๋ฅผ ํ์์ต๋๋ค.
์ด๋ฒ์๋ koa-router๋ฅผ ์ค์นํ๊ณ ๊ฒฝ๋ก๋ฅผ ํด๋๋จ์๋ก ์ ๋ฆฌํ์ฌ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ์ฌ ๊ฐ์ด ํ๊ตฌํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ผ๋จ ๊ณต์๋ฌธ์๋ฅผ ๋ณด๋ฉด์ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
https://openbase.io/js/koa-router
์์ ์ฒซ๋ฒ์งธ ์บก์ณ๋ koa-router document์์ ๋ฐ์ทํ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ์๋๋ express routingํ๋ ์์ค๋ฅผ ๋ฐ์ทํ๊ฒ์ ๋๋ค.
์ด๋ ๊ฒ express์ koa ๋์ ๋๊ณ ๋ณด์์๋ ํฌ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด์ง๋ ์์๊ฒ ๊ฐ์ต๋๋ค. ๋ค๋ฅธ์ ์ด๋ผ๋ฉด express๋ ์์ฒด์ routing๊ด๋ จ ๋ฉ์๋๊ฐ ๋ด์ฅ๋์ด์๋ ํํธ, koa๋ ์ํ๋ ๋ฏธ๋ค์จ์ด๋ฅผ ์ค์นํด ์ฌ์ฉํ๋ค๋ ์ ?
(์ฌ๊ธฐ๋ง ๋ดค์๋, ์์ค์ฝ๋ ์์ฑํ๋ ๊ฐ๋ฐ์์ ์ฅ์์๋ koa๊ฐ ์ข๋ ๊ฐ๊ฒฐํ๊ณ ์ ๋ง๋๋ก ์ฌ์ฉํ ์ ์๋์ ๋?)
์ผ๋จ ์์ค์ฝ๋๋ฅผ ์์ฑํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ๊ธฐ์กด์ ์ฌ์ฉํ๋ test ์๋ต์ฉ ์์ค๋ ๊ณผ๊ฐํ ์ง์์ฃผ์๊ณ , routing ์์ ์ํ์ฌ '/'๊ฒฝ๋ก๋ก ์ ์ํ์ ๋, hello world๋ผ๋ ๋ฉ์์ง๊ฐ ๋ณด์ด๋๋ก ์์ค์ฝ๋๋ฅผ ์ฑ์ ๋ฃ์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
// about routing
// ctx๋ express๋ก ์น๋ฉด res,rep๊ฐ ๋ด๊ฒจ์๋ ๊ฐ์ฒด๋ผ๋ณด๋ฉด ๋ฉ๋๋ค.
// next๋ ๋ค์ ๋ฏธ๋ค์จ์ด๋ก ๋๊ฒจ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
const router = new Router();
router.get('/', (ctx, next) => {
ctx.body = 'ํ';
});
app.use(router.routes());
app.use(router.allowedMethods());
์ฌ๊ธฐ์ next parameter๋ ์์ง ์ฌ์ฉํ์ง ์๊ธฐ๋๋ฌธ์ ์๋ตํ์ ๋ ๋ฉ๋๋ค. (ctx, next) --> (ctx)
์ฌ๊ธฐ๊น์งํ๊ณ ํ๋ฒ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด๋ณด๋๋ก ํ ๊น์?
์์๊ฐ์ด ๋์ค์ จ๋ค๋ฉด, routing ๊ธฐ์ด์ค์ ์ด ์๋ฃ๋์์ต๋๋ค. ์ถํ๋๋ ค์ ^^
์ด๋ฒํฌ์คํ
์ ์ฌ๊ธฐ๊น์ง ์์ฑํ๊ธฐ๋ก ํ๊ณ , ๋ค์ ํฌ์คํ
์์๋ REST API๋ฅผ ์ํ Routing ์์
์ ์งํํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋๋ DB๋ฅผ ๋จผ์ ์ฐ๊ฒฐํ๊ธฐ๋ก ํ์๋๋ฐ ํฌ์คํ
ํ๋ ์ฌ๋์ ์์ ์ฐฉ๊ฐ๊ด๊ณ๋ก ๊ผฌ์ฌ๋ฒ๋ฆฐ DB์ฐ๊ฒฐ๊น์ง ๋ง๋ฌด๋ฆฌ ์ง์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๐
TodoList
* REST API ๊ตฌ์ฑ
* Mongo DB ์ฐ๊ฒฐํ๊ธฐ
'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/์๋ฒ๊ตฌ์ถ (1) (0) | 2020.03.13 |
[MEMO APP] Back-end/ํ๊ฒฝ์ค์ (2) (0) | 2020.03.12 |
[MEMO APP] Back-end/ํ๊ฒฝ์ค์ (1) (0) | 2020.03.12 |