[node.js] express/bodyparser/middleware

Hyo Kyun Lee·2021년 6월 7일
0

node.js

목록 보기
6/34

1. 기초개념

  • node.js는 웹페이지 서버가 사용자의 요청을 받고 이에 대해 응답하도록
    로직을 구현하는 것이 핵심이다.

  • Express
    이때 사용하는 app의 인스턴스는 Express prototype을 참조한다. 즉 Express 라이브러리를 사용하여 해당 속성을 넘겨받는데, 서버요청 및 응답 등 Routing에 대한 과정은 Express 라이브러리가 핵심이기때문에 Express 메소드가 중요하다.
    웹서버를 구성할때 express 모듈을 사용하면 간결한 로직이 가능하기때문에, 필수적으로 사용된다.

  • bodyparser
    기본적으로, parsing 개념은 데이터를 가공하고 정제하는 것을 의미한다.
    보통 client의 요청을 받아오는 인자는 req 인자인데, 이때 req.body를 통해 받아오게 된다. 이때 받아온 body는 곧 사용자가 보내온 요청이고, 이에 대한 접근 및 해석이 필요하기때문에 body parsing/body parser라는 개념이 생긴 것이다.
    bodyparser는 모듈로 제공되어 내장함수로 활용할 수 있다.

  • middleware
    로직실행중 중간과정에 접근하여 기능을 수행하는 메소드/함수를 일컫는다.
    express 모듈특성상 사용자가 보내온 API요청(req.body)에 직접접근은 불가능하고, 중간에 접근하여 데이터를 조회하는 개념으로 이해해야 한다.
    이 개념이 미들웨어(middleware)이고, 다시 말해 사용자가 보내온 요청도 bodyparsing을 통해 조회/접근할 수 있는 형태로 가공 및 정제되어야 한다는 의미이다.

2. 코드예시

express module 사용을 위한 라이브러리 호출(require("express")

요청한 req안의 name/price/description 변수에 접근하는 방식에 주목

//로그인시 들어오는 요청 / url들이 모두 보관되는 장소
// 어떤 기능을 하는지 유추할 수 있도록 js파일 명명을 하는 것이 중요

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

//MiddleWare
//요청/응답함수의 중간인자로 넣어
//요청을 받으면 중간에 실행된 후에 응답을 진행하는 로직
function testMiddleWare(req, res, next) {
  console.log("first middelWare");
  next();
}

//router 객체에 대한 내장함수 사용
//get함수
//해당 url 요청을 받으면 이후 로직을 통해 사용자에게 응답
router.get("/", testMiddleWare, (req, res) => {
  res.send("admin 이후 url");
});

router.get("/products", (req, res) => {
  //message를 보낸다면 send!
  //res.send("admin/products이후 url");

  //template를 보낸다면 render!
  res.render("admin/products.html", {
    message: "hello!",
  });
});

//products.html의 작성클릭시
//해당 url요청을 받으며 넘어오게 됨
router.get("/products/write", (req, res) => {
  res.render("admin/write.html");
});

//write.html의 부트스트립화면에서 작성하기 클릭시
//post 함수를 통해 다음 로직을 구현

//write.html에서 각 데이터 입력후 작성하기를 눌렀을때
//그 입력한 값들에 데이터들도 post를 통해 제출됨

router.post("/products/write", (req, res) => {
  //client가 요청할때 req에는 입력한 정보들이 담긴다!
  res.send(req.body.name);
  res.send(req.body.price);
  res.send(req.body.description);
});

//admin.js 파일을 export 조치하기.
//이 파일은 app.js에서 import(require)하여 사용한다.
module.exports = router;

3. 참조링크

https://velog.io/@yejinh/express-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4-bodyParser-%EB%AA%A8%EB%93%88
https://jinbroing.tistory.com/126

4. remind

코드에 대한 이해가 우선이다. sugar syntax보다는 sugar logic!

0개의 댓글