[MEMO APP] Back-end/ REST API-Register (1)
๐จ๐ป DB์ฐ๊ฒฐ (4)
๐ Controller ์์ฑํ๊ธฐ
์์ ํฌ์คํ ์์ ์ ํฌ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ์ฅ์์ํ ๋ฐ์ดํฐ์ ํ์ธ ๋ชจ๋ธ์ ์์ฑํด์ฃผ์์ต๋๋ค.
์ด๋ฒ์๋ ์ ์ ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ์ด ๋์ด์ง๋๋ก ํ๋ฒ Controller๋ฅผ ์์ฑํด ๋ณผ๊ฒ์.
Controller๋ ์์ ์ ์ฐ๋ฆฌ๊ฐ ์์ฑํ๋ api ํด๋์์ v1.0 ํด๋์์ ์์ ์ ํด์ค๊ฒ๋๋ค.
์ผ๋จ ์ฒซ๋ฒ์งธ๋ก ๋ง๋ค Controller๋ ํ์๊ฐ์ ์ ์ํ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ง๋ค๊บผ์์.
v1.0ํด๋์์ auth๋ผ๋ ํด๋๋ฅผ ๋ง๋ค์ด์ค๊ฒ์. ์์ผ๋ก ์ธ์ฆ๊ณผ ๊ด๋ จ๋ ์์ ๋ค์ ์ด๊ณณ์์ ์ฒ๋ฆฌ๋ฅผ ํ๊ฒ ๋ ๊ฒ๋๋ค.
(ํ์๊ฐ์ ๋ ์ธ์ฆ์ด ํ์ํ ์ ์ฐจ์ ๋๋ค.)
์ด์ ์ ํ๋ ์์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๊ณณ์์ ์ฌ๋ฌ๊ฐ์ URL๊ฒฝ๋ก๊ฐ ๋์ฌ์์ ์ด๋ ์ด ์ฌ๋ฌ๊ฐ์ ๊ฒฝ๋ก๋ฅผ ์ฒ๋ฆฌํ index.js ์ auth์ controller๊ฐ ๋ auth.ctrl.js ์ ๋ง๋ค์ด ์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ์ ์ผ๋จผ์ ๋ฐฉ๊ธ์์ฑํ index.js ๋ถํฐ ์์ ์ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
const Router = require('koa-router');
const auth = new Router();
/* /api/v1.0/auth */
auth.get('/', (ctx) => {
ctx.body = 'โ
Welcome to auth!!';
});
module.exports = auth;
์์๊ฐ์ด ์์ ์ ํ๋ค๋ฉด, ์ด index.js๋ฅผ api์์ v1.0ํด๋์์ index.js์ ์ฐ๊ฒฐํด ์ฃผ์ด์ผ๊ฒ ์ฃ ?
๊ทธ๋ผ ๋ง์ auth์ index.js์ v1.0์ index.js๋ฅผ ์ฐ๊ฒฐํด ์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
const Router = require('koa-router');
const auth = require('./auth');
const api = new Router();
/* /api/v1.0/... */
api.use('/auth', auth.routes());
module.exports = api;
์ด๋ ๊ฒ๊น์ง ์๋ฃํ๋ค๋ฉด ์๋ฒ๋ฅผ ์ผ๊ณ http://localhost:4000/api/v1.0/auth ์ ์ ์ํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
์์๊ฐ์ด ๋์๋ค๋ฉด auth์ ์ฐ๋๋ ์ฑ๊ณต์ ๋๋ค!
๊ทธ๋ฆฌ๊ณ ์ด auth ์์์ ํ์๊ฐ์ (register)๋ฅผ ์ํ Url ๊ฒฝ๋ก์ ๋ก๊ทธ์ธ(Login)์ ์ํ Url ๊ฒฝ๋ก๋ฅผ ๋ง๋ค์ด์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
( auth/index.js์์ ์์ ํฉ๋๋ค. )
์ฌ๊ธฐ์ ํ์๊ฐ์ ๊ณผ ๋ก๊ทธ์ธ๊ณผ์ ์ ๋ณด์์์ผ๋ก ๋ ธ์ถ์ด๋๋ฉด ์๋๋ ์ ๋ณด๋ค(pw๋ฑ..)์ด ํฌํจ๋จ์ผ๋ก POST๋ฐฉ์์ผ๋ก ์ ์ก์ ํด์ค๊ฒ๋๋ค.
( ์๋์ ์ฌ์ง์ฒ๋ผ ์์ ์ ํด์ฃผ์ธ์. )
const Router = require('koa-router');
const auth = new Router();
/* /api/v1.0/auth */
auth.get('/', (ctx) => {
ctx.body = 'โ
Welcome to auth!!';
});
auth.post('/register/local', (ctx) => {
ctx.body = 'โ
Welcome to register!!';
});
auth.post('/login/local', (ctx) => {
ctx.body = 'โ
Welcome to login!!';
});
module.exports = auth;
๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๊ฒฝ๋ก๋ก ์ ์์ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์๋ง ์ฐ๋ฆฌ๊ฐ ์ง์ ํ๋ โ Welcome to login!! ์ด ๋ฌธ๊ตฌ๊ฐ ๋์ค์ง ์๋๊ฒ์ ๋ณด์ค ์ ์์๊ฒ๋๋ค. ์ด ์ด์ ๋ ์ฐ๋ฆฌ๊ฐ post๋ฐฉ์์ผ๋ก ์ ์ก์ ํ๊ธฐ๋๋ฌธ์ ๋๋ค. ์ผ๋จ์ ์ด๋ ๊ฒ ๊ทธ๋๋ก ๋์๋ฉด ๋ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์์ฑํ ์์ค๋ฅผ ๋ณด๋ฉด auth.post() ์์์ ํ๋ผ๋ฏธํฐ๋ก ๋๊ฐ๋ฅผ ๋ฐ๋๋ฐ ํ๋๋ ๊ฒฝ๋ก(URL๊ฒฝ๋ก) ์ด๊ณ ๋ค๋ฅธ ํ๋๋ ํด๋น URL๋ก์ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ํจ์๊ฐ ๋ค์ด๊ฐ ์์ต๋๋ค.
( Arrow function = " ()=>{} " ๋ก ๋์ด์์ต๋๋ค. )
์ฆ ์ฌ์ฉ์๊ฐ ๋ณด๋ธ ํ์๊ฐ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ํน์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ผ๋ ๊ฐ DB์ ์ ์ฅํ๋ค๋ ๊ฐ ํ๋๊ณณ์ด๋ผ๋ ๋ง์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ด๋ถ๋ถ์ auth.ctrl.js์ ํ๋๋ก ๋ชจ์์ ์์ฑํ๊ณ ๊ด๋ฆฌํ ๊บผ์์. ์ auth.ctrl.js๋ฅผ ์ด์ด์ฃผ์ธ์.
๊ทธ๋ฆฌ๊ณ ๋ค์์ ์์ค๋ฅผ ์์ฑํด์ค๋๋ค.
์ฐ๋ฆฌ๊ฐ ๋ง๋ค๊ณ ์ ํ๋ local๋ก๊ทธ์ธ ๋ถ๋ถ๊ณผ localํ์๊ฐ์ ๊ด๋ จ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ง๋ค์ด์ฃผ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด์์์ ์ฐ๋ฆฌ๊ฐ ์ํ๋๋๋ก ๋ฐ์ดํฐ ํธ๋ค๋ง์ ํด์ค๊บผ์์.
์ค๋์ ์ฌ๊ธฐ๊น์ง๋ง ํ๊ณ ๋ค์ ํฌ์คํ ์์ ๋ฐฉ๊ธ์์ฑํ ๋ ํจ์์ ๋ด์ฉ์ ๋ง์ ์ฑ์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.