Node.js-express

1 분 소요

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적인 요소들이 인수로 들어올 수 있음.

카테고리:

업데이트:

댓글남기기