Node.js-express
express란?
- 서버쪽 웹어플리케이션을 좀 더 쉽게 구현할 수 있게 해주는 프레임워크이다.
- 설치 -> npm install express
- express에는 총 5가지 개념이 있다.
- 어플리케이션
- 미들웨어
- 라우팅
- 요청객체 → req
- 응답객체 → res
어플리케이션
- 익스프레스 인스턴스를 어플리케이션이라 한다.
- 서버에 필요한 기능인 미들웨어를 어플리케이션에 추가한다.
- 라우팅 설정을 할 수 있다.
- 서버를 요청 대기 상태로 만들수 있다.
const express = required("express"); const app = express();
미들웨어
- 미들웨어란? → 함수들의 연속 / 함수의 배열같은 느낌인데 express에서 어떤 기능을 추가하고 싶을 때 사용한다.
- 미들웨어를 추가할 때는 use함수를 쓴다.
- 미들웨어는 인터페이스가 정해져있다. 인자로 (req, res, next)를 가져야한다.
- 미들웨어는 자신이 할 일을 다 한 다음에 꼭 next()함수를 호출해줘야한다. next()없이 작성하면 그 다음 요청을 읽지를 못해서 계속 서버는 대기하고 있는 상태가 된다.
- 미들웨어는 보통 일반 미들웨어와 에러 미들웨어로 나뉜다. 에러 미들웨어는 인자로 (err, req, res, next) 이렇게 4개를 가진다.
라우팅
- 요청 url에 대해 적절한 핸들러 함수로 연결해주는 기능을 라우팅이라 한다.
요청객체
- 클라이언트의 요청 정보를 담은 객체를 말한다.
- 사실 http모듈의 request객체를 래핑한 것이다.
- req.params, req.query, req.body 등을 자주 사용한다.
응답객체
- 서버의 응답 정보를 담는 객체를 말한다.
- 사실 http모듈의 response객체를 래핑한 것이다.
- res.end() , req.status(), req.json() 등을 자주 사용한다.
http 메소드
- 1XX: 아직 처리중
- 2XX: 자, 여기있어
- 200: 성공(success), GET, PUT
- 201: 작성됨(created), POST
- 204: 내용 없음 (No Conent), DELETE
- 3XX: 잘 가~~~ (리다이렉트)
- 4XX: 니가 문제임 (클라이언트쪽 문제)
- 400: 잘못된 요청 (Bad Request)
- 401: 권한 없음 (Unauthorized)
- 404: 찾을 수 없음 (Not found)
- 409: 충돌 (Conflict)
- 5XX: 내가 문제임
- 500: 서버 에러 (Interel server error)
기본 구조
const express = require("express");
const app = express();
app.get("/", (req, res)=> {
res.send("<div>hello home page</div>");
});
// 사용자가 home에 접속했을 때 콜백함수가 실행
app.get("/login", (req, res)=> {
res.send("<h1>Login please</h1>");
});
// 사용자가 login페이지에 접속했을 때 콜백함수가 실행
app.listen(3000, () => {
console.log("Connected 3000 port!!");
});
// nodejs로 직접 웹서버를 만들었던것처럼 우리의 웹어플리케이션이 포트넘버 3000번을 바라보고있게하는것
// 그리고 리스닝이 성공했으면 콜백함수가 실행되면서 화면에 무언가 출력하는게 가능
- 사용자가 어떤 경로로 들어왔을 때 무엇이 실행될것인가를 결정해주는, 연결해주는 것이 get()메소드
- get()메소드를 라우터라고한다. - 어떤 요청이 들어왔을 때 처리해주는 아이
- 라우터라는 것은 너무너무너무너무나도 가장 중요한 개념이다. 특히 웹어플리케이션을 만들 때
- 이유는 사용자가 요청하는 것과 controller에서의 처리 사이를 중개해주기 때문이다.
- 지금 이 파일에 있는 모든 코드들은 굉장히 중요해서 내꺼로 만들어야함.
- send()함수로 클라이언트에 보내주는 것이기 때문에 클라이언트 화면상에 보여지는 html적인 요소들이 인수로 들어올 수 있음.
댓글남기기