티스토리 뷰
1. http로 서버 만들기
1) http로 서버 만들기
* 서버와 클라이언트
- 클라이언트가 request -> 서버는 request를 처리하여 response
2) 노드로 http 서버 만들기
* http 요청에 응답하는 노드 서버
- createServer로 요청 이벤트에 대기
- req 객체는 요청에 관한 정보가, res 객체는 응답에 관한 정보가 담겨 있다.
3) 8080 포트 연결
* res 메서드로 응답을 보냄
- write로 응답 내용을 적고 end로 응답 마무리
- http://127.0.0.1:8080에 접속
- localhost는 컴퓨터 내부 주소로 외부에서는 접근 불가능
4) 이벤트 리스너 붙이기
2. REST API와 라우팅
1) REST API
- 서버에 요청을 보낼 때는 주소를 통해 요청의 내용을 표현
- REST API: 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법
- /user: 사용자 정보에 관한 정보를 요청하는 것
- /post: 게시글에 관련된 자원을 요청하는 것
- HTTP 요청 메서드
- GET: 서버 자원을 가져오려고 할 때 사용
- POST: 서버에 자원을 새로 등록하려고 할 때 사용
- PUT: 서버의 자원을 요청에 들어있는 자원으로 치환하고자 할 때 사용
- PATCH: 서버 자원의 일부만 수정하고자 할 때 사용
- DELETE: 서버의 자원을 삭제하고자 할 때 사용
2) HTTP 프로토콜
- 모든 클라이언트와 서버간의 약속. HTTP 프로토콜로 소통 가능
- RESTful: REST API를 사용한 주소 체계를 이용하는 서버
3) 쿠키
* 요청의 단점: 누가 요청했는지 모름(ip주소, 브라우저 정도만)
- 키와 값의 쌍
- 매 요청마다 서버에 동봉해서 보냄
- 서버는 쿠키를 받아 읽어서 누구인지 파악
- writeHead: 요청 헤더에 입력하는 메서드
- Set-Cookie: 브라우저에게 쿠키를 설정하라고 명령
- req.headers.cookie: 쿠키가 문자열로 담겨있음
- req.url: 요청주소
- http의 요청과 응답은 헤더와 본문을 가진다.
- 헤더는 요청 또는 응답에 대한 정보를 갖는다.
- 본문은 주고받는 실제 데이터
- 쿠키는 부가 정보이므로 헤더에 저장된다.
4) http 상태코드
- 2xx: 성공 상태 코드
- 3xx: 리다이렉션(다른 페이지로 이동)
- 4xx: 요청 오류
- 5xx: 서버 오류
5) 세션 사용하기
- 쿠키의 정보는 노출되고 수정되는 위험이 있다.
- 중요한 정보는 서버에서 관리하고 클라이언트에는 세션 키만 제공된다.
- 서버에 세션 객체 생성 후 키를 만들어 속성명으로 사용
6) https
- 웹 서버에 SSL 암호화를 추가하는 모듈
- 오고 가는 데이터를 암호화해서 중간에 다른 사람이 요청을 가로채더라도 내용을 확인할 수 없음
- 요즘은 https가 필수
- http 서버를 https 서버로 변경하여 암호화를 위해 인증서 발급 필요
- http2
- SSL 암호화와 더불어 최신 HTTP 프로토콜인 http/2를 사용하는 모듈: 요청 및 응답 방식인 기존 http/1.1보다 개선되고 웹의 속도도 개선되었다.
7) cluster
- 싱글 스레드인 노드가 CPU 코어를 모두 사용할 수 있게 해주는 모듈
- 포트를 공유하는 노드 프로세스를 여러 개 둘 수 있다.
- 요청이 많을 때 병렬로 실행된 서버 개수만큼 요청을 분산
- 서버에 무리가 덜 간다.
- 컴퓨터 자원을 공유하지 못함
- Redis와 같은 별도 서버로 해결
'Node.js' 카테고리의 다른 글
5. MySQL (0) | 2023.04.05 |
---|---|
4. Express 웹 서버 만들기 (0) | 2023.04.05 |
3. 패키지 매니저 (0) | 2023.04.05 |
1. 노드 기본 기능 익히기 (0) | 2023.04.04 |
1. 노드 기본 기능 익히기 (0) | 2023.04.03 |