• Home
  • About
    • Lajancia Workspace photo

      Lajancia Workspace

      .

    • Learn More
    • Email
    • LinkedIn
    • Instagram
    • Tumblr
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects
  • Record
  • Blender
  • Blockchain

Express 사용하기

27 Oct 2021

Reading time ~2 minutes

Express

2021-11-07


노드에서 가장 많이 사용되는 express

app.js

const express = require("express");
const app = express();

app.get("/", (req, res) => {
  res.send("hello express");
});
app.listen(8080, () => {
  console.log("express console start");
});
  • 노드에서는 index를 주로 사용하지만 express 에서는 app을 주로 사용한다.

get과 set

app.set("port", 3000); // 전역 변수 설정과 유사

app.listen(app.get("port"), () => {
  console.log("express console start");
});

nodemon

  • 기존에는 서버를 실행한 뒤 코드가 바뀌면 서버를 종료하고 다시 실행시켜줘야 했지만, nodemon을 통해 자동으로 코드가 바뀌면 서버를 재시작하게 할 수 있다.

process.env.port

app.set("port", process.env.port || 3000); // 전역 변수 설정과 유사

app.listen(app.get("port"), () => {
  console.log("express console start");
});
  • 3000 말고 다른 포트를 사용하고 싶을 때 사용
  • 따로 set이 설정되지 않으면 3000포트에서 실행된다.

전체 코드

const express = require("express");
const path = require("path");
const app = express();

app.set("port", process.env.PORT || 3000);
app.get("/", (req, res) => {
  res.sendFile(path.join(__dirname, index.html));
});

app.post("/", (req, res) => {
  res.send("hello");
});
app.get("/about", (req, res) => {
  res.send("hello express");
});

app.listen(app.get("port"), () => {
  console.log("express console start");
});

미들웨어


공통으로 실행되어야 하는 코드를 실행시킬 수 있다.

app.use((req, res) => {
  console.log("모두 실행");
});
app.use((req, res) => {
  console.log("모두 실행");
  next();
});
  • next가 있으면 주소와 일치하는 것을 찾아 실행시킨다.
  • 이때 미들웨어는 아래 부분이다.
(req, res) => {
  console.log("모두 실행");
  next();
};

미들웨어를 여러개 사용도 가능하다.

app.use(
  (req, res) => {
    console.log("모두 실행");
    next();
  },
  (req, res) => {
    console.log("모두 실행2");
    next();
  },
  (req, res) => {
    console.log("모두 실행3");
    next();
  }
);
  • 이렇게 여러개를 겹쳐 사용할 수 있다.
  • next가 존재하기 때문에 그 다음 함수를 실행

에러 미들웨어도 존재한다.

app.use((err, req, res, next) => {});
  • 에러 미들웨어는 꼭 네 개의 매개변수를 사용해야 한다.
  • next(error)일 경우 바로 에러 처리 미들웨어로 넘어간다

404 에러는 에러 미들웨어 위에 작성한다.

app.use((req, res, next) => {});
  • 이 위의 모든 주소를 찾아보았는데 없으면 404 에러

wildcard


app.get("/category/javascript", (req, res) => {
  res.send("hello express");
});

app.get("/category/:name", (req, res) => {
  res.send("hello express2");
});
  • 만약 주소가 /category/javascript 일 경우에는 hello express를 출력하고, javascript가 아닐 경우, 두 번째를 실행시킨다.
app.get("*", (req, res) => {
  res.send("hello express2");
});
  • 모든 get 요청에 대하여 코드를 실행한다.

요청 한 번에 응답 한 번이 존재해야 하는데, 응답이 너무 많으면 에러가 난다.



backendexpressnode.js Share Tweet +1