express란?
- express는 Node.js에서 가장 많이 사용되는 웹 서버 프레임 워크중 하나입니다. koa나 hapi같은 웹 서버 프레임워크도 있지만 express가 다운로드 수가 가장 많으며, 많은 사람이 사용하는 만큼 버그가 적고 기능 추가 및 유지보수가 가장 활발하게 일어나는 웹 서버 프레임 워크입니다.
express 시작
import express from "express";
const app = express();
app.set("port", process.env.PORT);
app.listen(app.get("port"), () => {});
- express는 내부에 http 모듈이 내장되어 있기 때문에 위와같이 express 모듈을 import하고 express app 생성 후 listen 상태로 만들어서 웹 서버를 실행할 수 있습니다.
express 메서드
app.set(key, value)
- app.set 메서드는 app에 key와 value를 저장할 수 있습니다. 그리고 나중에 app.get(key)을 통해서 저장했던 값을 가져올 수 있습니다.
app.get(주소, 라우터)
- 라우터에 req,res,next를 인자로 받는 콜백 함수를 등록할 수 있으며, req에는 요청에 관한 정보가 들어있으며, res에는 응답에 관한 정보가 들어있습니다. next는 현재 콜백 함수가 최종 목적지가 아닐경우 next()를 호출하여 다음 middleware가 호출될 수 있도록 합니다.
GET, POST, PUT, PATCH, DELETE
- express 메서드에는 HTTP 메서드와 맵핑된 메서드들이 있으며 이를 이용해서 요청된 HTTP 메서드에 따라서 get, post, put, patch, delete 등의 메서드가 호출됩니다.
app.use
- app.use는 middleware를 등록하거나 라우터를 등록할 때 사용합니다.
- 첫 번째 인자로 주소를 넣지 않는다면 해당 middleware는 모든 요청에서 실행됩니다.
middleware
- express에서 middleware는 요청과 응답 중간에 위치하는 콜백 함수입니다. middleware를 통해서 요청과 응답을 조작하여 기능을 추가하거나 잘못된 요청을 걸러낼 수도 있습니다.
- middleware에서 사용하는 인자는 (req, res, next) 입니다. next를 통해서 다음 미들웨어나 finaleware의 호출 여부를 결정짓습니다.
- middleware는 app.use를 통해서만 등록할 수 있는 것은 아니며, get, post, put, delete 등의 http 메소드를 특정하여 해당 요청에서만 호출될 수 있도록 할 수 있습니다.
(err, req, res, next) middleware
- 특정 middleware에서 error 가 발생되어 next 호출 시 error를 전달하였다면 (err, req, res, next)를 인자로 받는 middleware가 호출되어 에러를 핸들링 하도록 할 수 있습니다.
route
router
.route("/abc")
.get((req, res) => {})
.post((req, res) => {});
- route 메서드를 이용해서 동일한 Url로 요청한 메서드들을 가시성 있게 프로그래밍할 수 있습니다.