3. Node.js 서버

Eos·2022년 5월 20일
0

3.1 노드 서버 만들기

서버와 클라이언트의 관계

  • 1) 서버는 클라이언트에게 요청(request)을 받음
  • 2) 서버가 요청을 처리함
  • 3) 서버가 답변(reponse)을 보냄

간단한 서버 만들기

const http = require('http');

const Server = http.createServer((req, res) => {
    res.write('<h1>Hello Node!</h1>');
    res.write('<p>Hello server</p>');
    res.end('<p>Hello Client!</p>');
})

RestAPI

서버 자원 정리, 자원의 주소 지정하는 방법

  • 서버가 이해하기 쉬운 주소가 좋음

  • Http 요청 메서드

GET: 서버 자원을 가져오려고 할 때 사용
POST: 서버에 자원을 새로 등록하고자 할 때 사용
PUT: 서버의 자원을 요청에 들어있는 자원으로 치환하고자 할 때 사용
PATCH: 서버 자원의 일부만 수정하고자 할 때 사용
DELETE: 서버 자원을 삭제하고자 할 때 사용

  • RESTful : REST API를 사용한 주소 체계를 이용하는 서버

HTTP 프로토콜

데이터 통신을 원활하게 하기 위한 통신 규약

  • 클라이언트가 누구든 HTTP 프로토콜로 소통 가능

Cookie란 키=값의 쌍으로 매요청(request)마다 서버는 Cookie를 동봉해서 답변(response)을 보낸다

  • Cookie를 넣는것을 직접 구현
    writeHead(): 요청 헤더에 입력하는 매서드
    Set-Cookie: 브라우저에게 쿠키를 설정하라고 명령

Http 통신의 헤더와 본문

모든 http 통신은 헤더와 본문을 가진다.

  • 헤더는 요청 또는 응답에 대한 정보를 가진다
  • 본문은 주고받는 실제 데이터.
  • cookie는 부가적인 정보이므로 헤더에 들어간다

Http 상태 코드

writeHead 매서드에 첫 번째 인수로 넣는 값.
요청의 성공과 실패를 알려준다.

  • 2xx는 성공을 알리는 상태 코드. 대표적으로 200(성공), 201(작성됨)이 자주 사용된다.
  • 3xx는 리다이렉션의 상태를 알려주는 상태 코드 대표적으로 301(영구 이동), 302(임시 이동)이 있다.
  • 4xx는 요청 오류를 나타낸다. 요청 자체의 오류가 있을때 표시된다.. 대표적으로 401(권한 없음), 403(금지됨), 404(찾을 수 없음)이 있다.
  • 5xx는 요청은 제대로 왔지만 서버에 오류가 생겼을 때 발생한다. 대표적으로 500(내부 서버 오류), 502(불량 게이트웨이), 503(서비스를 사용할 수 없음)이 자주 사용된다.

Set-Cookie 시 다양한 옵션이 있음.

  • 쿠키명=쿠키값 : 기본적인 쿠키의 값. mycookie = value 같이 설정
  • Expires=날짜 : 만료 기한입니다. 이 기한이 지나면 Cookie가 사라집니다 기본 값은 클라이언트가 종료될 때까지
  • Max-age=초 : Expires와 비슷한 역할이지만 날짜 대신 초를 입력할 수 있다. 해당 초가 지나면 Cookie가 사라진다. Expires보다 우선한다.
  • Domain=도메인명 : 쿠키가 전송될 도메인을 설정할 수 있다. 기본값은 현재 도메인이다.
  • Path=URL : 쿠키가 전송될 URL를 특정할 수 있다. 기본값은 '/'이고 이 경우 모든 URL에서 쿠키를 전송할 수 있다.
  • Secure : Https인 경우 쿠키가 전송된다.
  • HttpOnly : 설정 시 Javascript에서 쿠키에 접근할 수 없다. 쿠키 조작을 방지하기 위해 설정하는게 좋다.
profile
Node 백앤드 개발자입니다

0개의 댓글