Gorilla-Kim/Project

[MEMO APP] Back-end/ REST API-Register (1)

Kim_gorilla 2020. 3. 18. 02:20

 

๐Ÿ‘จ‍๐Ÿ’ป 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ํšŒ์›๊ฐ€์ž… ๊ด€๋ จ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ด์•ˆ์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ ๋ฐ์ดํ„ฐ ํ•ธ๋“ค๋ง์„ ํ•ด์ค„๊บผ์—์š”.

 

์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ํ•˜๊ณ  ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋ฐฉ๊ธˆ์ƒ์„ฑํ•œ ๋‘ ํ•จ์ˆ˜์˜ ๋‚ด์šฉ์„ ๋งˆ์ € ์ฑ„์›Œ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.