본문 바로가기
CODE/Back-end

HTTP Method를 활용한 요청 및 응답

by zerozero\base 2022. 1. 1.

HTTP Method에는 여러가지가 있지만, 가장 많이 사용하는 것은 아래 네가지이다.

 

  • get : 요청 받은 정보를 검색(read)하여 응답
  • post : 요청된 자원을 생성(create)
  • put : 요청된 자원을 수정(update)
  • delete : 요청된 자원을 삭제(delete)

 

라우팅

라우팅은 클라이언트의 요청에 맞게 분기처리해서 응답하도록 하는 것을 의미한다.

 

routes/index.js

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

// post method
let arr = [];
router.post('/create', (req, res) => {
  const data = req.body.data // body의 raw json에서 key값이 data인 value를 data라는 변수로 담음 
  // 만약 변수이름과 key값이 같다면
  // const {data} = req.body; 로 써도 동일함!!
  arr.push(data);
  res.status(200).json({
    message: "create success",
    result: arr,
  });
})

// get method
router.get('/read', (req, res) => {
  res.status(200).json({
    message: "read success",
  });
})

// put method
router.put('/update/:id', (req, res) => {
  const { id } = req.params;
  const {data} = req.body;
  arr[id] = data;
  res.status(200).json({
    message: "update success",
    result: arr,
  });
})

// delete method
router.delete("/delete/:id", (req, res) => {
  const {id} = req.params;
  arr.splice(id, 1);
  res.status(200).json({
    message: "del success",
    result: arr,
  });
})

module.exports = router;

 

미들웨어

요청(req)와 응답(res) 사이의 과정에서 목적에 맞게 한 번에 처리하는 함수.

로그인 상황을 예로 들자면, 로그인을 위해선 'create'(post), 'delete', 'update'(put)의 과정을 개별의 함수가 각각 실행해야 하는 비효율이 존재한다. 하지만 미들웨어로 하나의 함수에 통합하면, 특정 목적에 맞게 해당 업무를 한 번에 처리할 수 있게 된다.

 

app.js

// middleware
// 어떤 요청이 들어와도 미들웨어를 우선 실행하게 함.
app.use((req, res, next) => {
  console.log("middleware입니다!");
  next();
})

 

routes/index.js

var express = require('express');
var router = express.Router();
const loginCheck = require('../module/loginCheck'); // 외부 js로 빼내고 불러오기


// login
router.get('/', loginCheck, (req, res) => {
  res.status(200).json({
    message: "login success입니다",
  });
})



module.exports = router;

 

module/loginCheck.js

loginCheck를 별도의 파일로 분리했다.

const loginCheck = (req, res, next) => {
  const userLogin = true; // 로그인이 true라면
  if (userLogin) {
    next();
  } else {
    res.status(400).json({
      message: "login fail입니다",
    });
  }
};

module.exports = loginCheck; // loginCheck 내보내기

 

 

'CODE > Back-end' 카테고리의 다른 글

Prisma와 PlanetScale - [1] ORM  (0) 2022.06.09
multer로 이미지 업로드 기능 만들기  (0) 2022.01.01
NPM 패키지 설치와 Express, Nodemon  (0) 2021.12.31
API 서버 만들기  (0) 2021.12.31
Node.js  (0) 2021.12.27

댓글