티스토리 뷰
모듈과 미들웨어
모듈은 라이브러리와 같은 것으로 필요한 부분을 다운 받아서 사용할 수 있는것이고, 미들웨어는 다운 받은 모듈을 커스텀 한 것이라고 생각하면 됩니다.
미들웨어의 경우 콜백함수(req, res)의 형태를 띄고, 먼저 쓰여진 미들웨어가 먼저 실행됩니다.
참고 : http://jinbroing.tistory.com/126
HTTP request 와 response 이해하기
앞서 프로젝트에 사용된 모듈을 공부하는데 Request header가 어쩌구, request body가 어쩌구 하는데 도무지 이해가 가지 않아서 HTTP 전송에 대해서 좀 더 찾아보게 되었습니다.
Request-Line
*(( general-header | request-header | entity-header ) CRLF)
CRLF
[ message-body ]
Request 메시지는 위와 같은 구조를 가지고 서버로 넘어온다고 합니다. 맨 앞에 Request-Line이 오고, 이어서 여러 종류의 헤더가 나온 다음에 줄바꿈을 두번하고 메시지 바디가 오게된다. 앞서 살펴본, body-parser 모듈은 맨 마지막에 오는 message-body를 받는 역할을 하는 것!
Status-Line
*(( general-header | response-header | entity-header ) CRLF)
CRLF
[ message-body ]
(+) 그렇담 응답헤더는 어떤지도 봐야할 것 같아서 넣었습니다. 요청헤더 대신 응답헤더가 들어간 것만 다르네요.
참고 : https://blog.outsider.ne.kr/888
multipart/form-data란?
<form name="formName" method="post" enctype="multipart/form-data">
<input type="file" />
<input type="text" />
</form>
파일 업로드를 위한 form 태그의 enctype 속성이다.
HTTP Request는 Body에 클라이언트가 전송하려고 하는 데이터를 넣을 수 있다. HTTP Header(=Content-type)에 Body에 들어가는 데이터의 타입을 명시해 줌으로써 서버가 타입에 맞게 인코딩할 수 있도록 한다.
파일 업로드의 경우 위의 예시와 같이 form 태그 안의 속성이 서로 다를 수 있기 때문에, 이렇게 content-type이 서로 다른 경우에 multipart/form-data를 enctype 속성으로 정의한다.
(+) html form의 인코딩 방식 3가지
application/x-www-form-urlencoded
(the default)multipart/form-data
text/plain
(+) Accept header와 Content-type
Accept header는 클라이언트가 서버에게 보내는 request의 데이터 타입을 명시하는 것이고, Content-type은 서버가 클라이언트에게 보내는 response의 데이터 타입을 명시하는 것이다.
참고 : http://blog.naver.com/PostView.nhn?blogId=callzone&logNo=140055259392
next()
next()
함수는 Node.js 또는 Express API의 일부가 아니지만, 미들웨어 함수에 전달되는 세 번 째 인수로써, next()가 호출되면 앱 내의 그 다음 미들웨어 함수가 호출 된다. 보통 에러핸들링에 많이 사용한다.
multer 미들웨어
앞에서 말한 multipart/form-data를 처리하기 위해 멀터 모듈을 사용한다.
'개발 > Node.js' 카테고리의 다른 글
package.json 파일 분석 (0) | 2017.11.30 |
---|---|
nodejs로 프로젝트 시작하기 (0) | 2017.11.30 |