제목 가이드 : [Day3] Do it! NodeJs 프로그래밍 05장
ex) [1일차] Do it! 첫 파이썬 - 01. 컴퓨터야 반가워!
1. 공부한 책DB를 검색하여 넣어 주세요.
https://book.naver.com/bookdb/book_detail.nhn?bid=11738465
2. 공부한 페이지 : p135 ~ p198
3. 공부한 내용 :
05-1. 간단한 웹 서버 만들기
먼저 require('http')메소드로 http를 불러온다.
createServer()메소드를 호출하여 웹 서버 객체를 만들고, 그 객체의 listen()메소드를 호출하여 특정
포트에서 대기하도록 설정한다.
[클라이언트가 웹 서버에 요청할 때 발생하는 이벤트 처리하기]
connection :클라이언트가 접속하여 연결이 만들어질 때 발생하는 이벤트
request: 클라이언트가 요청할때 발생하는 이벤트
close: 서버를 종료하는 메소드이다.
writeHead(statusCode[,statusMessage][,headers]) : 응답으로 보낼 헤더릏 남든다
write(chunk[,encoding][,callbak]) :응답 본문 데이터를 만든다. 여러번 호출 할 수 있다
end([data][,encoding][,callback]):클라이언트로 응답을 전송한다 파라미터에 데이터가 들어있다면 이 데이터를
포함시켜 응답을 전송한다. 클라이언트의 요청이 있을 떼 한 번은 호출되어야 응답을 보낸다.
[클라이언트에서 요청이 있을때 파일 읽어 응답하기]
require()함수로 fs모듈을 읽어 readFile()메소드로 파일을 읽어들인다. 콜백함수 안에서는 write()메소드를
사용해서 파일 내용을 클라이언트로 전송한다
[파일을 스트림으로 읽어 응답보내기]
pipe()메소드로 응답 객체와 연결하여 보낸다
[서버에서 다른 웹 사이트의 데이터를 가져와 응답하기]
웹 서버에 요청을 보내는 방식은 get, post,put, delete가 있다.
05-2 익스프레스로 웹 서버 만들기
node js에서 서버를 만들 때 http 모듈을 사용하여 만드는 것보다 익스프레스 모듈을 사용하는 것이 편하다
익스프레스의 use 메소드를 사용하면 미들웨어를 등록하여 사용할수 있다.
미들웨어를 통하여 요청이 들어오면 클라이언트로 응답을 할수 있다.
미들웨어는 여러개를 등록할 수 있으며 응답의 여러 메소드를 통해 원하는 값을 전달 하거나 원하는 동작을 할 수 있다.
05-3 미들웨어 사용하기
- static 미들웨어 : 특정 폴더의 파일들을 특정 패스로 접근할 수 있도록 만들어 줌
예) public 폴더에 있는 모든 파일을 웹 서버의 루트 패스로 접근할 수 있도록 만들고 싶다면
1) app.use('/public', static(path.join(__dirname, 'public')));
-> 접속 url : local:포트/public/파일명.html
2) app.use(static(path.join(__dirname, 'public')));
-> 접속 url : local:포트/파일명.html
- body-parser 미들웨어 : POST로 요청했을 때 요청 파라미터를 파싱하여 요청객체의 body 속성에 넣어줌
본문인 Body 영역에 요청파라미터가 들어가게됨
- 라우터 미들웨어 : 요청 url이 무엇인지 일일이 확인해야 하는 번거로운 문제를 해결하는 것
예) /public/login.html 에서 action="/process/login" 설정한 경우 submit 하면,
router.route('/process/login').post(function(req, res) { 실행문 } 구문으로 서버에서 응답함
05-5. 쿠키와 세션 관리하기
사용자가 로그인한 상태인지 아닌지 확인하고 싶을 때는 쿠키나 세션을 사용한다.
쿠키는 클라이언트 웹 브라우저에 저장되는 정보이며, 세션은 웹 서버에 저장되는 정보이다.
쿠키 처리하기
쿠키는 클라이언트 웹 브라우저에 저장되는 정보로서 일정 기간 동안 저장하고 싶을 때 사용하고 싶을 때 사용한다.
익스프레스에선 cookie-parser 미들웨어를 사용하면 쿠키를 설정하거나 확인할 수 있다.
클라이언트의 쿠키 정보는 cookies 객체에 들어 있는데 사용자가 응답문서를 조회할 때 쿠키 정보를 볼 수 있도록 처리하는 함수에서 이 쿠키 객체를 응답으로 보낸다. 그러면 클라이언트에서는 쿠키객체를 그대로 전달받게 된다.
세션 처리하기
세션도 상태 정보를 저장하는 역할을 하지만, 쿠키와 달리 서버쪽에 저장된다. 세션을 사용하는 대표적인 예로는 로그인을 했을 때 저장되는 세션을 들 수 있다. 익스프레스에서는 세션을 지원하기 위해 express-session 모듈을 사용한다. 세션을 사용할 때는 쿠키도 같이 사용하므로 cookie-parser모듈도 함께 불러들인다.
로그인 화면에서 로그인하여 세션이 만들어지면 connect.sid 쿠키가 브라우저에 저장된다. connect.sid쿠키는 웹 브라우저에서 세션 정보를 저장할 때 만들어진 것이다. 브라우저마다 이름이 다를 수 있지만 쿠키를 사용해 세션정보를 저장하는 방식은 같다.
05-6 파일 업로드 기능 만들기
파일을 업로드 할때는 멀티파트(Multipart) 포맷을 사용한다.
노드에서 multipart를 사용하려면 multer 미들웨어를 사용하고,
POST방식으로 데이터를 전송하므로 body-parser 미들웨어와 파일시스템을 사용하므로 fs모듈을 함께 사용한다.
npm install multer --save 명령어로 설치.
cors 모듈은 CORS라고 불리는 다중 서버 접속 지원을 위해 사용된다.
multer 미들웨어를 사용할때 미들웨어 사용순서가 중요하다.
body-parser -> multer -> router
multer 미들웨어의 주요 메소드는 다음과 같다.
destination(req, file, callback) : 업로드한 파일이 저장될 폴더 지정
filename(req, file, callback) : 업로드한 파일의 이름을 수정
limits : 파일 크기나 파일 개수 등 제한 속성을 설정
업로드된 파일은 req.files에 배열로 저장된다.
req.files[index].속성(originalname, filename, mimetype, size 등) 으로 접근이 가능하다.
## 실습코드 : https://github.com/dlckdgjs89/NodeJS
'Programing > NodeJs' 카테고리의 다른 글
Do it! NodeJs 프로그래밍 - Day 8 (0) | 2020.08.08 |
---|---|
Do it! NodeJs 프로그래밍 - Day 6 (0) | 2020.08.08 |
Do it! NodeJs 프로그래밍 - Day 4 (0) | 2020.08.08 |
Do it! NodeJs 프로그래밍 - Day 2 (0) | 2020.08.08 |
Do it! NodeJs 프로그래밍 - Day 1 (0) | 2020.08.08 |