JavaScript/node.js

2020.07.17. 수업내용 - node.js(5)

dev_sr 2020. 7. 17. 11:57

http 모듈을 사용할 때 문제가 많음

1. if switch를 사용해서 메서드 분리가 필요

2. 오타나면 찾기가 어려움

 

-> npm express를 사용해서 패키지 관리자를 이용한다.

express는 웹개발을 편하게 해주는 여러가지 모듈들을 집합

 

visual code에서 프로젝트를 하나 만들고(폴더) 해당 경로에서 npm init을 입력해준다

package.json파일이 생김

 

npm i express 를 하면 설치가 된다.

package-lock.json  파일이 생김 ( 패키지 버전 관리를 해줌)

express가 사용하는 외부 모듈들도 생김

 

npm i express-generator -g

글로벌(전역)로 설치를 해줌 (콘솔 명령어라서 전역 설치가 필요함)

 

 

express learn-express --view=pug 

express 는 템플릿 엔진을 제공하는데

view 템플릿 엔진 중 pug(Jade) 라는 것을 사용한다

그럼 이렇게 폴더가 생김

 

app.js 가 메인 소스

 

cmd명령어는 npm start

시작하기 전에 npm i를 먼저 실행해줌 - express에서 사용하는 모듈들을 설치해줌

그 다음에 npm start입력

 

 

localhost:3000으로 이동하면 웹서버가 실행된다.

다른 포트를 이용하고 싶으면

bin -> www에서 포트쪽을 다른 숫자로 바꿔준다.

 

 

미들웨어

요청에 대한 처리를 해주는 것

express의 핵심이다.

 

요청 --->미들웨어(처리) --->응답

 

미들 웨어는 주로 app.use와 함께 사용된다.

 

app.js의 이부분이 미들웨어임

위에서부터 순차적으로 실행된다.

 

미들웨어를 엮어서 처리할 수도 있다

요청 ---> 처리1 -->처리 2--->처리 3--->...->처리 10 -->응답

 

 

커스텀으로 만들수있다.

next를 반드시 호출해주자!

미들웨어의 흐름을 제어한다 (다음 미들웨어로 흐름이 이어지도록 한다)

 

 

에러 핸들러

404 에러를 응답해주는 미들웨어

 

morgan 미들웨어

요청에 대한 정보를 콘솔에 기록해준다

 

body-parser 미들웨어

요청의 본문을 해석해주는 미들웨어

우리가 원하는 정보로 변환해준다.

express에서 이 미들웨어의 기능을 일부포함하고 있어서 이제는 꼭 필요하지 않음

완전히 대체되진 않음

 

 

Router 객체로 라우팅 분리하기

요청 메서드와 주소별 분기처리를 해주는 것

 

index.js와 users.js에 모듈로 등록되어 있음

next함수는 라우터를 사용할 경우

next('route')를 사용함

라우터에 연결된 나머지 미들웨어들을 건너뛰고 싶을 때 사용한다.

연결된 2, 3번 라우터는 실행되지 않는다.

주소와 일치하는 다음 라우터로 넘어간다.

 

라우터에는 특수한 패턴이 있는데

주소부분에 id를 쓰면 startWith('/usres/')를 대신할 수 있다.

id부분에 다른 값을 넣을 수 있다. ex)/users/1, /users/123

1, 123을 조회할 수 있다.

 

주소에 querystring을 쓸 때도 있는데

req.query 에 키,값 정보가 들어간다.

 

요청 주소에 대한 정보가 담겨 있다.

다른 라우터들보다 뒤에 위치해야 다른 라우터를 방해하지 않는다.

반드시 클라이언트에게 에러가 발생하지 않았다면 응답해야한다(1회 요청, 1회 응답)

 

 

이런 함수들이 있다.

res.json을 가장 많이 씀

->json으로 응답함

 

 

기본적으로 200 http로 응답함 (http 상태코드가 약속이 되어있음)

200은 ok의미

500은 서버에러

404는 NOT FOUND

 

라우터가 요청을 처리하지 못하는 경우 다음 미들웨어로 넘어간다.