suvera-dev ๐Ÿฅฆ

CRUD (1) - ๊ฐœ๋… ๋ฐ ํšŒ์›๊ฐ€์ž… ๊ตฌํ˜„ ์‹ค์Šต ๋ณธ๋ฌธ

Server

CRUD (1) - ๊ฐœ๋… ๋ฐ ํšŒ์›๊ฐ€์ž… ๊ตฌํ˜„ ์‹ค์Šต

suvera 2022. 2. 2. 04:49

โ˜„๏ธCRUD : ๋Œ€๋ถ€๋ถ„์˜ ์ปดํ“จํ„ฐ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ฐ€์ง€๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ

 

CRUD ACTION HTTP Method SQL
CREATE ์ƒ์„ฑ POST INSERT
READ ์กฐํšŒ GET SELECT
UPDATE ์ˆ˜์ • PUT UPDATE
DELETE ์‚ญ์ œ DELETE DELETE

๐ŸŒช CRUD ์‹ค์Šต 

 

1. Express ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ (express crud -> cd crud -> npm i)

2. {{uri}}/user ๊ฒฝ๋กœ ์ƒ์„ฑํ•˜๊ธฐ

2-1. crud/app.js์— ์žˆ๋Š” 8์ค„, 23์ค„ ์—†์• ๊ธฐ

2-2. crud/routes/index.js์˜ router.use์— user๋“ฑ๋ก

 

3. ๊ธฐ์กด  index.js ํŒŒ์ผ

var express = require('express');
var router = express.Router();

router.use("/user", require("./user"));

module.exports = router;

4. ๊ธฐ์กด์— ์žˆ๋˜ users.js ํŒŒ์ผ์„ ์ง€์šฐ๊ณ  ์ƒˆ๋กœ์šด user.js ํŒŒ์ผ ์ƒ์„ฑ

const express = require("express");
const router = express.Router();

router.post('/signup', (req, res) => {

});

module.exports = router;

 

๐Ÿ’ฅ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ๋•Œ ๋งˆ๋‹ค ์„œ๋ฒ„๋ฅผ ์ผฐ๋‹ค ๊ป๋‹ค ํ•˜๊ธฐ ๊ท€์ฐฎ์Œ ! 

nodemon: ํ”„๋กœ์ ํŠธ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€, ํŒŒ์ผ์ด ์ˆ˜์ •๋œ ๊ฒŒ ๊ฐ์ง€๋˜๋ฉด ์„œ๋ฒ„๋ฅผ ์ž๋™์œผ๋กœ ์žฌ์‹œ์ž‘ํ•ด์ฃผ๋Š” ํˆด

 

nodemon ์ „์—ญ ์„ค์น˜ (ํ•œ ๋ฒˆ๋งŒ) ํ›„ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ์—์„œ nodemon์œผ๋กœ ์‹œ์ž‘ 

 

๐ŸŒˆCURD Router 

 

router.METHOD('path' , (req, res) => {...});

- Method : .get(...), .post(...)

- path : ์ ‘๊ทผํ•  path ์„ค์ •

- request : request๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋“ค์ด ๋‹ด๊ฒจ์žˆ์Œ

- response : response๋กœ ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์Œ

 

- (req, ...

  • req.query : {{url}}?member=server , req.query.member === server
  • req.params : {{url}}/post/:idx , req.params.idx === 23
  • req.body : {“name”: “Suvera", “part”: “server”} , req.body.name === “Suvera”
  • req.headers
  • req.file

- res) => ...

  • res.status(xxx)send(json)
  • .status : status code๋ฅผ ์ •์ˆ˜๋กœ ์ž…๋ ฅ
  • .send() : json ํ˜•์‹์œผ๋กœ response body ์— ์ž…๋ ฅ , ์ด๋•Œ ๊ทœ์น™์ ์ธ ๋ฐ์ดํ„ฐ๋กœ ๋ณด๋‚ด์ค˜์•ผ ํด๋ผ์ด์–ธํŠธ์™€์˜ ํ†ต์‹ ์ด ์›ํ™œ 

 

โšก๏ธ์‹ค์Šต 

1 ๋‹จ๊ณ„ : ์š”์ฒญ ๋ฐ›๊ณ  ์‘๋‹ต์ฃผ๊ธฐ

2 ๋‹จ๊ณ„ : ์—๋Ÿฌ ์ฒ˜๋ฆฌ 

3 ๋‹จ๊ณ„ : JSON ์‘๋‹ต

4 ๋‹จ๊ณ„ : ๋ชจ๋“ˆํ™”

 

1๋‹จ๊ณ„ : ์š”์ฒญ & ์‘๋‹ต

 

request ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ - user.js์— ์œ ์ € ์ถ”๊ฐ€ํ•˜๊ธฐ - response ๋ฐ์ดํ„ฐ ๋‚ด๋ณด๋‚ด๊ธฐ 

const express = require("express");
const router = express.Router();
const users = require("../dbMockup/user");

router.post('/signup', (req, res) => {
    const { id, name, password, email } = req.body;

    const newUser = { id, name, password, email };

    users.push(newUser);
    
    res.status(200).send({ status: 200, message: "success", data: newUser});
});

module.exports = router;

API๋ฅผ ์„ค๊ณ„,๊ตฌ์ถ•,ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜‘์—… ํ”Œ๋žซํผ์ธ POSTMAN 

ํšŒ์›๊ฐ€์ž… ์š”์ฒญ ๋ฐ ์‘๋‹ต์ด ์ž˜ ๋˜๋Š”์ง€ ํ™•์ธ ์™„๋ฃŒ !

 

2๋‹จ๊ณ„ : ์—๋Ÿฌ์ฒ˜๋ฆฌ

1. request data ์ฒดํฌ 

2. ํ•ด๋‹น ์ด๋ฉ”์ผ์„ ๊ฐ€์ง„ ์œ ์ €๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ? 

    // request data ํ™•์ธ - 4๊ฐœ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์—†๋‹ค๋ฉด Bad Request ๋ฐ˜ํ™˜
    if (!id || !name || !password || !email) {
        return res.status(400).send({ status: 400, message: "BAD REQUEST"});
    }

    // ํ•ด๋‹น ์ด๋ฉ”์ผ์„ ๊ฐ€์ง„ ์œ ์ €๊ฐ€ ์ด๋ฏธ ์žˆ์„ ๊ฒฝ์šฐ Already Email  ๋ฐ˜ํ™˜
    const alreadyUser = users.filter(user => user.email === email).length > 0;
    if (alreadyUser) {
        return res.status(409).send({ status: 409, message: "ALREADY EMAIL"});
    }

.filter() : ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ์กฐ๊ฑด์„ ํ†ต๊ณผํ•˜๋Š” ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜

 

3๋‹จ๊ณ„ : JSON ์‘๋‹ต (์ผ๊ด€๋œ ํ˜•์‹)

- ์ผ๊ด€๋œ ์‘๋‹ต ํ˜•์‹์„ ์œ„ํ•ด util.js ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ 

const util = {
    success: (status, message, data) => {
        return {
            status,
            success: true,
            message,
            data,
        };
    },
    fail: (status, message) => {
        return {
            status,
            success: false,
            message,
        };
    },
};

module.exports = util;
return res.status(400).send(util.fail(400, "BAD REQUEST"));
res.status(200).send(util.success(200, "ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต", newUser));

ํด๋ผ์ด์–ธํŠธ์™€์˜ ์›ํ™œํ•œ ์†Œํ†ต์„ ์œ„ํ•ด ํ˜•์‹ ๋งž์ถฐ์ฃผ๊ธฐ 

 

4๋‹จ๊ณ„ : ๋ชจ๋“ˆํ™”

์ž์ฃผ + ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” message, code, util ๋”ฐ๋กœ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ธฐ !

responseMessage.js
statusCode.js

 

๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋กœ๊ทธ์ธ, ์—…๋ฐ์ดํŠธ , ์‚ญ์ œ ๊ตฌํ˜„ ์‹ค์Šต ํ•ด๋ณด๊ธฐ ! 

'Server' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

HTTP  (0) 2022.02.02
Comments