라우터레벨 미들웨어

express.Router()를 사용하면 라우터 레벨의 미들웨어를 사용할 수 있다.

위 처럼 라우터에서도 use와 method를 사용할 수 있다.

 

 

 

 

 

오류 처리 미들웨어

오류 처리 미들웨어는 function의 parameter 첫번째 인자로 error를 받아 처리한다.

 

 

 

 

 

기본 제공 미들웨어

정적 모듈 처리 static 미들웨어

 

express에서 기본적으로 제공하는 미들웨어가 있는데 그 중 정적 모듈을 처리하는 static 미들웨어가 있다.
우선 public 폴더 안에 nodejs.png 사진 파일을 넣었다. 그리고 그것을 불러오고 싶을 때 다음과 같이 코드를 설정한다.

 

 

 

로컬호스트 경로로 가면 png 파일이 불러오는 것을 확인할 수 있다.

 

 

 

 

 

html 파일도 가능하다. public 폴더 밑에 해당 html 파일을 만든 후 로컬호스트 다음 경로로 가 보면 해당 html 파일이 불러진다.

 

 

 

 

public 폴더 안에 images 폴더를 만든 후 그 안에 그림 파일을 넣으면 경로를 다음과 같이 설정해야 한다.

 

 

 

 

 

써드 파티 미들웨어

  • express에서는 다양한 써드파티 미들웨어를 사용할 수 있습니다.
  • 필요한 기능에 따라 npm install을 사용하여 모듈을 설치하여 사용합니다.
  • 아래는 쿠키 구문 분석 미들웨어인 cookie-parser의 사용 방법 입니다.
  • 우선 cookie-parser 설치합니다.
npm install cookie-parser
  • 사용법은 다음과 같습니다.
var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');

// load the cookie-parsing middleware
app.use(cookieParser());
  • 써드파티 미들웨어는 다음 링크에서 확인할 수 있습니다.

https://expressjs.com/ko/resources/middleware.html

 

Express 미들웨어

Express 미들웨어 목록에 적힌 Express 미들웨어 모듈들은 Expressjs 팀이 유지보수합니다. 미들웨어 모듈 설명 내장 함수 (Express 3) body-parser HTTP 요청 body를 파싱합니다. body, co-body, 그리고 raw-body도 참

expressjs.com

 

 

출처 : https://codegear.tistory.com/51

 

NodeJS기초-10.Express 서버 만들기2-미들웨어

아래는 이 글의 동영상 강의입니다. https://youtu.be/ceNqxXQMuKw * 본 문서는 아래 사이트를 참고하여 작성하였습니다. https://expressjs.com/ko/guide/using-middleware.html Express 미들웨어 사용 미들웨어 사용 Expres

codegear.tistory.com

 

Express는 client의 요청을 받아 처리할 때 미들웨어라는 개념을 사용한다. Express 애프리케이션은 기본적으로 일련의 미들웨어 함수 호출이다.

 

 

 

미들웨어란 ?

미들웨어 함수는 req(요청) 객체, res(응답) 객체, 그리고 어플리케이션 요청-응답 사이클 도중 그 다음의 미들웨어 함수에 대한 엑세스 권한을 갖는 함수이다.

미들웨어란 간단하게 말하면 클라이언트에게 요청이 오고 그 요청을 보내기 위해 응답하려는 중간(미들)에 목적에 맞게 처리를 하는, 말하자면 거쳐가는 함수들이라고 보면 되겠다.

예를 들어서 요청-응답 도중에 시간을 콘솔 창에 남기고 싶으면 미들웨어 함수를 중간에 넣어서 표시를 한 뒤에 계속해서 다음 미들웨어들을 처리할 수 있도록 하는 것이다.

다음 미들웨어 함수에 대한 엑세스는 next 함수를 이용해서 다음 미들웨어로 현재 요청을 넘길 수 있다.

next라는 말에서 알 수 있듯이 next를 통해 미들웨어는 순차적으로 처리된다. 

 

 

 

 

애플리케이션 레벨 미들웨어

app.use에서 선언된 function이 미들웨어이다.

const express = require('express');
const app = express();
app.listen(3000);

app.use(function(req, res){
  res.send('Express Server!!!');
});

 

 

 

 

한 개의 요청을 여러개의 미들웨어가 처리할 수 있다. next 인자를 처리하면 하위 스택을 처리하게 된다.

 

 

 

 

 

라우트를 사용하는 방법, client 요청을 http method 별로 처리 가능하다.

get 이면 get, post 면 post

 

 

 

 

 

next를 사용해서 미들웨어를 여러개 실행할 수 있다. 하나의 경로에 여러개의 라우트를 정의하는 것도 가능하다.

그러나 동일한 메소드를 2개이상 만들고 앞에서 response를 처리하면 다음 메소드는 실행되지 않는다.

 

 

 

 

 

PS : nodemon

nodemon을 설치하면 서버를 껏다 켜지 않아도 저장한 것이 적용이 되어 편리하다

npm install -g nodemon@2.0.9

터미널에서 이 명령어로 설치하면 된다.

그 후 nodemon index로 실행한다.

 

response.statusCode 는 상태코드를 지정해서 전달하기가 가능하다. 404 오류 일으킬 수도 있다.

response.setHeader는 header를 설정할 수 있다.

response.writeHead는 위의 두 코드를 간단하게 줄여서 사용이 가능하다.

 

 

 

 

 

상태코드는 200, header의 Content-Type 값이 설정한 대로 되어 있는걸 확인할 수 있다.

 

 

 

 

 

write와 end를 이용해 response body를 만들 수 있다. 다음과 같이 write에 해당 코드 값을 하나하나 넣는 방식도 있고, 

response.end('<html><body><h1>Hello, World!</h1></body></html>');

이 처럼 end에 모든 코드들을 몰아서 집어 넣는 방식도 있다.

 

 

const http = require('http');

http.createServer((request, response) => {
  const { headers, method, url } = request;
  let body = [];
  request.on('error', (err) => {
    console.error(err);
  }).on('data', (chunk) => {
    body.push(chunk);
  }).on('end', () => {
    body = Buffer.concat(body).toString();

    response.on('error', (err) => {
      console.error(err);
    });

    response.writeHead(200, {'Content-Type': 'application/json'})
    const responseBody = { headers, method, url, body };
    response.end(JSON.stringify(responseBody))
  });
}).listen(8080);

 

 

 

 

 

 

에코서버로 다음과 같이 /echo로 요청하는 post 메소드에 대해서 응답하는 서버를 만들 수 있다.

 

 

 

 

만약 Get 방식으로 서버를 전송했다면 설정한 바와 같이 404 에러가 뜬다.

 

 

 

 

 

POST 방식일 경우 정상적으로 body 값이 응답이 되는걸 확인할 수 있다.

 

 

+ Recent posts