Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

레커

[Node] Express 본문

개발/Node

[Node] Express

Prism Wrecker 2023. 9. 18. 17:03

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