2020.07.03(금) Sprint 7. Server & Node

Park, Jinyong·2020년 7월 3일
1

Today I Learned

HTTP

  • 클라이언트와 서버 간 요청-응답이 이루어지는 과정이다.

  • header와 body(옵션)로 이루어져 있다.

  • 브라우저와 서버가 통신할 수 있도록 만들어 주는 여러 프로토콜 중 하나이다.

  • 서버는 클라이언트의 요청에 대해 (에러가 발생했더라도) 무조건 응답을 돌려 주어야 한다.

Method

CRUD(Create, Read, Update, Delete) 패턴과 대응하는 메서드들이 존재한다.

  • GET (Read)

  • POST (Create)

  • PUT (Update)

  • PATCH (Update)

  • DELETE (Delete)

  • OPTIONS

메서드를 의미론적으로 사용하는 것을 RESTful하다고 한다.(RESTful은 민감한 주제이므로 조심..)

Status Code

  • 200번대: Succeed

  • 300번대: Redirection

  • 400번대: Client Error

  • 500번대: Server Error

Messages

  • 상태줄(status line)

    • http method를 포함하면 요청, status code를 포함하면 응답이다.
  • 헤더(headers)

    • 부가적인 정보를 포함한다.
    • General header: 요청과 응답 모두에 적용되는 헤더. body와는 무관하다.
    • Request header: 리소스나 클라이언트에 대한 자세한 정보를 담고 있다.
    • Response header: 서버에 대한 정보. 응답에 대한 부가적인 정보를 담고 있다.
    • Entity header: content 길이나 MIME 타입과 같은 body에 대한 정보를 담고 있다.
  • 본문(body)

    • 리소스를 담고 있다.
    • 모든 응답에 본문이 포함되지는 않는다.

속성

  • connectionless: 하나의 요청과 응답 연결이 완료되면 맺었던 연결을 끊는다.

  • stateless: connectionless의 특징으로 인해 이전 요청과 응답이 이후 요청과 응답에 영향을 미치지 않는다. 서버가 사용자를 이후 연결에도 식별할 수 있도록 브라우저 단에서 쿠키를 저장하기도 한다.

Node.js의 내장 모듈인 http를 사용하여 서버 단을 작업해보았다.

http 모듈


오늘은 간만에 페어 없이 솔로로 진행했다. 혼자서 API 문서를 분석하고 여기저기 찾아보고 작성까지 해야했는데 생각보다 어려웠다. 일단 nodejs 문서가 잘 나와있는 편이긴 하지만... 예시가 하나도 없어서 보기 어려웠다. http 자체를 처음 사용해보는거라 공식 문서의 튜토리얼을 따라가도 이해가 잘 되지 않았고, 결국 완성은 했지만 "이게 대체 왜 되는거지?"라는 생각에 빠져버렸다... 전혀 배운 게 없는 것 같다... 이번 주말 동안 한 줄 한 줄 작성하며 연습해보아야겠다.

node 명령어로 서버를 계속 재시작하기 번거로우니 nodemon을 사용했는데, 계속 address already in use 127.0.0.1:5000 에러가 발생해서 아래와 같은 해결법을 찾았다.

$ lsof -nP -iTCP:5000 | grep LISTEN
node    68468 jinyongp   28u  IPv4 836812      0t0  TCP 127.0.0.1:5000 (LISTEN)

$ kill 68468

하지만 에러가 너무 자주 발생해서 그냥 node 명령어로 일일히 재시작했다. 어서 해결할 수 있는 방법을 찾아야겠다.

0개의 댓글