BugDIARY

Nodejs에서 Middlewar사용하기 본문

IT/Node.js

Nodejs에서 Middlewar사용하기

HEMON 2021. 3. 10. 00:15

▶Middleware사용하기

middleware는 요청과 서버 사이에서 실행하는 것을 말합니다.

미들웨어는 변수로서 request, response, next를 받을 수 있습니다. (가지고 있음)

const middlewareHome = (req, res, next) => {
    console.log("middleWare View");
    next();
}

app.get("/", middlewareHome, handleHome);

간단히 Middleware를 확인할 수 있는 함수입니다.

① middlewareHome이라는 함수는 request, response, next라는 변수를 가지고 있으며

② 이 변수에 값을 받게 되면 안의 console.log를 실행한 뒤

③ next()를 반환시켜줍니다.

  ※ 현재의 미들웨어 함수가 요청-응답 주기를 종료하지 않는 경우에는 next()를 호출하여 그 다음 미들웨어 함수에 제어를 전달해야 합니다. 그렇지 않으면 해당 요청은 정지된 채로 방치됩니다.

④ 이후 handleHome이라는 함수를 실행시키면 아래와 같은 결과가 나오게 됩니다.

 

URL을 입력하여 서버에 요청을 보냅니다.

요청을 받으면 console창에 아래와 같은 로그를 출력합니다.

로그가 출력된 뒤 아래와 같은 화면이 표시됩니다.

▶morgan의 사용

npm install morgan

npm WARN public_recipe@1.0.0 No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

+ morgan@1.10.0
updated 1 package and audited 542 packages in 3.792s

40 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

※ 참고 : 위의 로그는 이미 설치되어 있기 때문에 실패했습니다. 

 

morgan을 사용하면 어떤 접속을 하고 있는지 로그로 보여줍니다.

● tiny

app.use(morgan("tiny"));

tiny를 설정한 후 URL을 서버에 요청합니다.

아래와 같이 로그가 출력됩니다. 

  →어떤 종류의 접속이며 몇 초가 걸렸는지 알려줍니다.

combined

app.use(morgan("combined"));

combined를 설정한 후 URL을 서버에 요청합니다.

아래와 같이 로그가 출력됩니다.

 →어떤 종류의 접속인지, 어떤 브라우저를 통해 접속하였는지, 몇초가 걸렸는지 등 상세한 정보가 로그로 출력됩니다.

그 외에도 "common", "dev"등 다양한 로그 출력 방식이 있습니다.

여기서는 "dev"를 사용하겠습니다.

 

이 아래로는 기능에 대한 설명만 적겠습니다.

▶helmet

   - Helmet은 다양한 HTTP 헤더를 설정하여 Express 앱을 보호하는 데 도움이됩니다. 주로 보안을 담당합니다.

▶body-parser

   - 서버에 의해서 폼 양식의 데이터를 받을 수 있게 정의하는 기능입니다. 

   - 이전엔 body-parser를 다운로드 하여 사용하였으나 최근 버전에서는 express에 해당 기능이 내장되게 되었습니다.(다운로드 불필요)

    - 쉽게 말하면 서버가 어떠한 데이터 양식을 인식(혹은 이해)하길 바랄 때 사용하는 기능입니다.

▶cookie-parser

   - 쿠키를 다룰 수 있게 도와주는 기능입니다.

 

▶nodemon의 편의 기능

package.json

  "scripts": {
    "start": "nodemon --exec babel-node init.js --delayed 2"
  },

위와 같이 nodemon 기능을 사용하는 start변수 값에 [--delayed 2]라고 추가를 해 주면 갱신되는 속도를 지연시킬 수 있습니다.

값의 정의 방법은 [--delayed 지연하고 싶은 시간] 입니다.

 

▶nodejs의 처리는 위에서 아래로 처리가 됩니다.

   때문에 순서를 잘 두고 기능을 정의하여 사용해야 합니다.

 

 

'IT > Node.js' 카테고리의 다른 글

import 와 export  (0) 2021.03.10
Nodejs의 Express사용하기 ( 2 )  (0) 2021.03.09
Nodejs의 Express사용하기  (0) 2021.03.04
Nodejs의 express프레임워크  (0) 2021.03.01
Comments