1. Express
- nodemon 설치
- http 와 달리 서버 실행할 때 createServer 함수 사용 없이 Express 실행만 하면 서버 실행 가능
2. 라우트 파라미터
- 어떤 자료에서 특정 부분만 가져오고 싶을 때 사용
- url/:id 처럼 라우팅 코드에서 요청 url 뒤에 : 을 붙인 후 그 뒤에 변수 작성
app.get("/contacts/:id", (req,res)=>{
res.send(`view contacts for ID: ${req.params.id}`)
});
req.params.id -> 요청을 보낼 때 id 값을 같이 보내는데, 요청에서 파라미터가 모두 담긴 객체 중에 id 값이 담긴 변수
- post : 추가
- put : 수정
- delete : 삭제
3. 미들웨어
- 요청과 응답 중간에서 요청 처리하거나 원하는 형태로 응답 수정하는 기능을 가진 함수
3.1) 라우터 미들웨어
- router 객체 만들기
const router = express.Router();
- app.js 에서 router 객체를 미들웨어로 등록 => app.use 함수 사용app.use(router);
- router 객체를 사용해 라우트 코드 작성
const express = require("express");
const router = express.Router();
router.route("/contacts")
.get((req,res)=>{
res.send("contacts page");
})
.post((req,res)=>{
res.send("create contacts");
});
//특정 부분만 사용하고 싶을때 : 라우트 파라미터 - GET, PUT, DELETE
router.route("/contacts/:id")
.get((req,res)=>{
res.send(`view contacts for ID: ${req.params.id}`)
})
.put((req,res)=>{
res.send(`update for ID: ${req.params.id}`)
})
.delete((req,res)=>{
res.send(`delete for ID: ${req.params.id}`)
});
//모듈로 동작시키기 위함
module.exports = router;
<->
app.js- 여기서 app.use로 불러오는 파일만 수정하면 라우터 코드 건드리지 않고 다른 파일 불러올 수 있음.
- app.use("/users", require("./routes/contactRoutes")); => /users 이 부분 수정하면 얼마든지 재사용 가능
const express= require("express");
const app = express();
//라우터 객체 생성
const router = express.Router();
//요청 방식을 함수 이름으로 사용가능
app.get("/",(req,res)=>{
res.send("Hello-node");
});
//별도로 저장한 파일을 불러와야함
app.use("/users", require("./routes/contactRoutes"));
app.listen(3000,()=>{
console.log("서버 실행중");
})
contactsRouters.js
const express = require("express");
const router = express.Router();
router
.route("/")
.get((req,res)=>{
res.send("contacts page");
})
.post((req,res)=>{
res.send("create contacts");
});
//특정 부분만 사용하고 싶을때 : 라우트 파라미터 - GET, PUT, DELETE
router
.route("/:id")
.get((req,res)=>{
res.send(`view contacts for ID: ${req.params.id}`)
})
.put((req,res)=>{
res.send(`update for ID: ${req.params.id}`)
})
.delete((req,res)=>{
res.send(`delete for ID: ${req.params.id}`)
});
//모듈로 동작시키기 위함
module.exports = router;
3.2) 바디파서 미들웨어- 서버로 요청 보낼 때 요청 본문에 담긴 것을 파싱하는 미들웨어 파싱 : 전송 자료를 프로그램에서 사용할 수 있는 형식으로 변환하는 것
* 함수- .json()- .urlencoded() : 브라우저에 백엔드라고 검색했을 때, https://www.google.com/search?q=백엔드
이때 넘겨지는 자료를 어떻게 파싱할 지 지정하는 것
-> app.use(express.urlencoded({ extended:true })); : query string이 중복된 객체인 것도 처리 가능
-> .urlencoded(extended:false)
router
.route("/")
.get((req,res)=>{
res.send("contacts page");
})
.post((req,res)=>{
console.log(req.body); //이 부분 추가
res.send("create contacts");
});
실행하면

- undefined라고 뜸
-> req.body에 요청을 파싱해 주지 않았기 때문
-> 요청을 파싱해주어야 JSON 값을 가져다 사용 가능
=> 미들웨어 등록해주어야함
app.js
//바디파서를 사용해달라고 미들웨어 등록
app.use(express.json());
app.use(express.urlencoded({ extended : true }));
즉, 요청 본문에 있는 내용을 프로그래밍에 사용할 수 있도록 파싱하려면 바디파서라는 미들웨어를 등록해주어야함
-> 요청 본문을 가지고 와서 필요한 변수로 할당한 다음 사용 가능
'node.js' 카테고리의 다른 글
| Node.js - 모듈 ~ 라우팅 (0) | 2024.01.07 |
|---|---|
| 8장 몽고디비 (0) | 2023.11.26 |
| 4장 ~ 5장 (0) | 2023.11.06 |