-
Express.js로 서버 만들기 - CodeHan의 코딩공부BackEnd/개념정리 2022. 9. 12. 09:53반응형
Node의 유용한 Module인 Express.js로 쉽고 간단하게 서버를 만들어보자.
정말 어렵지 않고 좋은 라이브러리라고 생각한다. 그럼 바로 시작하자.
const express = require('express')
const app = express();
app.get('/',(req, res, next) => {res.send(...);})app.listen(8080);끝났다.
단 6줄만에 서버를 만들고 get요청까지 보내는 함수를 만들었다.이제 자세한 코드를 조금씩 들여다보자.코드리뷰
Express는 req,res,next를 처리하는 함수를 middleware로 부르고 express는 middleware의 연속이다.
Express 한 번 res반응을 하면 그 뒤에 연결된 middleware는 호출되지 않는다.
App.use는 들어오는 모든 연결에 대해서 처리하는 함수.
비슷한 역할을 하는 app.all도 있다.
둘의 차이점은??
: all은 해당 경로에서만 응답하고 그 하위 경로에서는 응답하지 않는다.
즉 exact의 속성을 가지고 있지만, use는 해당 경로 및 그 하위 경로에서도 응답한다.
Requset
Request는 path, headers, params, query등 다양한 정보를 담고있다.
Params은 /:params로 호출되고 오브젝트형태로 저장된다.
Query는 /?keyword=xxx 과 같은 형식으로 표현된다.
Response
서버에서 client에 보내는 응답으로 보통 statusCode와 서버에서 보내는 data가 담겨있다,
Res.setHeader('key', 'value')로 헤더도 보낼 수 있는데 이때 key와 value형태로 전송한다.
MiddleWare Chaining의 특징
누가 먼저 등록했는지 등록한 순서가 중요하다.
같은 요청에 대해 중복으로 콜백함수를 등록할 수 있다.
해당 경로에 대한 요청이 들어왔을 때 아무런 응답을 해주지 않으면 멈춘 상태가 된다.
그러므로 요청에 대한 응답을 반드시 해주어야 하고 이를 유념하며 서버를 작성해야한다.
어떻게 응답을 할 수 있을까?
Middlewate는 chining이 되어 있으므로 next()를 호출해야 그 다음 체인으로 넘어간다.
Next에서 route를 넣어주면 요청한 응답에서 바로 다음 체인으로 넘어간다.
안에 에러도 넣어줄 수 있는데 어떤 에러인지 알 수 없으므로 에러는 항상 마지막에 호출해주어야한다.
App.use((error, res,req,next) => {new Error()})로 응답할 수 있다.
만약 에러가 발생하지 않았지만 없는 경로라면?
에러 메시지 전이나 후에 없는 경로에 대한 middleware를 작성해주면 된다.
ex) app.use((res,req,next) => {res.status(404).send('Not Found')};
요약하자면 express는 흐름이 이어지게 설계해야 한다!
반응형'BackEnd > 개념정리' 카테고리의 다른 글
Express.js Router 사용하기 - CodeHan의 코딩공부 (0) 2022.09.12 서버에서 에러 처리하기 - CodeHan의 코딩공부 (0) 2022.09.12 Node로 JSON 주고받기 - CodeHan의 코딩공부 (0) 2022.09.11 Node로 서버 시작하기 - CodeHan의 코딩공부 (0) 2022.09.11 Database (0) 2022.06.29