Code States - Immersive 20기 (Day 16)

LANA·2020년 5월 20일
0

Today I Learned

목록 보기
35/73

오늘 배운 내용

  • Sprint 6. Server & Node
    • Node.js 및 Package.json 심화 학습
    • HTTP advanced + Network Tab 학습
    • Mini Server Sprint 솔로 프로그래밍

과제 진행 현황

  • Chatter box client - XSS, Room 부분 남음(advanced).
  • Understanding Prototype Chain 블로깅
  • Mini Server Sprint 진행 완료...

느낀점

  1. 어제까지는 client의 역할을 이해하는 차원에서 프로그래밍을 진행했다면, 오늘은 client로부터 request를 받고, response를 해주는 과정을 구현하는 mini server sprint를 진행하였다.

  2. node.js의 HTTP 트랜잭션 문서를 보고 구현해야했지만 쉽지 않았다.
    참조: HTTP 트랜잭션 해부

    • HTTP 메소드(GET, POST, OPTIONS) 요청과 응답의 과정을 직접 구현해볼 수 있었다.

    • 특히 options가 preflight request의 기능을 한다는 것을 개념적으로 이해할 수 있었다.

    • POST할 때 쓰는 구문들이 이해가 잘 안갔는데 어느정도 해소를 할 수 있었다.
      1) const results = {results:[]}로 묶는 이유
      - 처음에 클라이언트 만들때 담기는 json 형태 값이 results.results (배열)의 형태이기 때문

      2) JSON.stringify()와 JSON.parse()를 쓰는 이유에 대한 해답을 찾고 싶었다
      - HTTP 메시지는 텍스트의 형식을 따르고 있습니다. json 객체가 메시지에 들어갈 수는 없는 노릇이죠. 그러므로, payload를 메시지에 담기 위해서는 stringify가 필요합니다. (이걸 보고 전문용어로 직렬화, serialization 라고 합니다)

      반대로 HTTP 메시지를 사용하려면, (그것이 요청이든, 응답이든) 메시지에 담긴 json string을 자바스크립트가 사용할 수 있도록 parse를 해줘야합니다. (역직렬화, deserialization)

    • Buffer가 Buffering할 때의 그것인지 처음알게 되었다(TMI...)

  3. server의 역할을 이제까지 사람으로 따지면 '컴퓨터와 사람 사이를 이어주는 번역가'정도로 이해했는데, node.js에서 req,res 등의 명령어를 보고 잠시 멍때렸다(...)

  4. 솔직히 아직 이해가 부족한 것 같다. 내일 아침에 생활코딩이라도 좀 더 보고, 페어프로그래밍에 임해야겠다.

profile
Let's code like chord !

0개의 댓글