레커
[Node] Express 본문
1. 설치
npm i express
2. 기본 코드
//express 모듈 가져오기
const express = require("express");
// express 로 된 app 생성
const app = express();
const port = 4000;
// "/" 경로요 요청이 오면 작동
app.get("/", (req, res) => {
res.send("Hello World!");
});
// 해당포트로 http 서버 실행
app.listen(port, () => {
console.log(`Example app listening on port ${port}`);
});
3. router 설정
const express = require("express");
const app = express();
const port = 4000;
app.get("/", (req, res) => {
res.send("Hello World!");
});
app.get("/test", (req, res) => {
res.send("Hello Test!");
});
app.listen(port, () => {
console.log(`Example app listening on port ${port}`);
});
4. post 요청 처리
const express = require("express");
const app = express();
const port = 4000;
// json데이터를 json() 미들웨어를 통해 사용가능
app.use(express.json());
app.post("/", (req, res) => {
const data = {
name: req.body.name,
age: req.body.age,
};
console.log(data);
});
app.listen(port, () => {
console.log(`Example app listening on port ${port}`);
});
5. req / res
const express = require("express");
const app = express();
const port = 4000;
app.get("/test/:id", (req, res) => {
const userId = req.params.id;
res.send("Hello" + `${userId}!`);
});
app.listen(port, () => {
console.log(`Example app listening on port ${port}`);
});
1) res.json(object)/res.send(string) 차이
const express = require("express");
const app = express();
const port = 4000;
app.get("/", (req, res) => {
res.send({ a: "send()" });
res.json({ a: "send()" });
});
app.listen(port, () => {
console.log(`Example app
listening on port ${port}`);
});
두개의 함수가 기능상으로 거의 동일함. 다만 Object를 보냈을 떄 차이가 있음
res.json(object) 구성 코드를 확인하면 object를 JSON문자열로 변환을 하고 Content-Type이 설정하지 않아도 셋팅하고 res.send()를 호출하기 때문에 send()로 보내면 자동으로 application/json 설정됩니다.
res.send()같은 경우 바디의 타입을 확인하고 object일 경우 res.json을 호출합니다.
※ 결론
두개가 밖에서 보면 차이가 없다고 볼 수 있지만, 전송하는 데이터가 object 일 때는 res.json을 이용하는 것이 내부에서 호출을 줄 일 수 있다.
2) res.send() / res.end()
res.end()는 데이터를 수집하거나 클라이언트에게 통신을 할 떄 마지막 단계에서 종료할 때 사용
res.end()를 꼭 해야되는 경우는 데이터를 제공하지 않고 응답을 끝낼 때 필요함
res.send()/res.json()으로 데이터를 보내는 경우에는 자동으로 종료가 됩니다.
※ 결론
end()를 사용하게 되면 Content-Type / ETag가 없습니다
(ETag 는 특정 버전에 대한 식별자 입니다.)
6. 미들웨어
1) 등록방법
app.use();
2) 사용
const app = express();
//app.use()는 미들웨어를 등록하는 작업으로 보면 된다.
app.use(function (req, res, next) {
console.log('Time:', Date.now());
// next()쓰면 다음 미들웨어로 넘어가게 된다.
next();
});
app.get("/", (req, res) => {
});
6. router
app.get() / app.post() 등 몇개 없을 때는 크게 상관없지만 많아지면 router를 이용해 구분
//server.js
const express = require("express");
const port = 4000;
const usersRouter = require("./routes/users.router.js");
const app = express();
app.use(express.json());
app.use("/users", usersRouter);
app.listen(port, () => {
console.log(`Example app listening on port ${port}`);
});
// users.router.js
const express = require("express");
const usersRouter = express.Router();
usersRouter.get("/", (req, res) => {
res.send("Hello user");
});
usersRouter.get("/:id", (req, res) => {
const id = req.params.id;
res.send("Hello " + id);
});
module.exports = usersRouter;
'개발 > Node' 카테고리의 다른 글
[Node] JWT (0) | 2023.09.19 |
---|---|
[Node] express.static() (0) | 2023.09.18 |
[Node] http 모듈 웹서버 (0) | 2023.09.18 |
[Node] npm (0) | 2023.09.15 |
[Node] Node.js (0) | 2023.09.15 |