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을 통해 조회/접근할 수 있는 형태로 가공 및 정제되어야 한다는 의미이다.
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;
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
코드에 대한 이해가 우선이다. sugar syntax보다는 sugar logic!