38일차 TIL 210428 서버, 클라이언트

1. 클라이언트, 서버, API ?

  • 클라이언트 서버 아키텍처(2티어 아키텍처) : 상품 정보와 같이 리소스가 존재하는 곳과, 리소스를 사용하는 앱을 분리시킨것
  • 리소스를 사용하는 앱 = 클라이언트
  • 리소스가 존재하는 곳 = 서버
  • 보통 서버는 리소스를 전달하는 역할을 할 뿐, 리소스를 저장하는 공간은 따로 두는 것이 보통( 3티어 아키텍처)
  • 리소스를 저장하는 공간 = 데이터 베이스

스크린샷 2021-04-30 오후 11 20 13

  • 클라이언트와 서버 간의 통신은 요청과 응답으로 구성된다. 요청이 있어야만 응답이 온다.
  • 프로토콜 = 통신 규약. 서버에 요청을 하기 위한 상호간 약속
  • 웹 애플리케이션 아키텍처 에서는 클라이언트와 서버가 서로 HTTP라는 프로토콜을 이용해서 서로 대화를 나눈다.
  • 프로토콜은 다양한 종류가 존재한다. 각자의 프로토콜마다 지켜야 하는 규약이 존재한다.

스크린샷 2021-05-01 오후 1 47 44

  • API(Application Programming Interface) : 리소스를 잘 활용할 수 있도록 서버에서 제공하는 메뉴판

2. HTTP API 디자인 : 메소드

  • CRUD와 흡사하다.
  • GET / POST / PUT, PATCH / DELETE
  • GET : 특정 리소스의 표시를 요청한다. GET / index.html
  • POST : 서버로 데이터를 전송한다
  • PUT : 요청 페이로드를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체한다. PUT /new.html HTTP/1.1
  • DELETE : 지정한 리소스를 삭제한다 DELETE /file.html HTTP/1.1

3. HTTP 메시지

  • 서버와 클라이언트 간에 데이터가 교환되는 방식 : 요청 / 응답
  • 시작줄에는 실행되어야 할 요청, 요청 수행에 대한 성공 실패가 기록됨
  • 옵션으로 HTTP 헤더 세트가 들어간다. 요청에 대한 설명

스크린샷 2021-05-01 오후 2 03 58

4. HTTP 상태코드

  • 100번대 : 메시지 정보
  • 200번대 : 요청성공
  • 300번대 : 리다이렉션
  • 400번대 : 클라이언트 에러
  • 500번대 : 서버에러

image

  • HTTP의 무상태성(stateless) 에 대하여: HTTP는 특정 상태를 담고 있지 않으며, 이전 요청이나 다음 요청을 기억하지 않음

5. AJAX : Asynchronous Javascript and XML

  • 페이지 깜빡임 없이 seamless 하게 작동 하는, JS 와 DOM + 서버와 자유롭게 통신하는 XMLHttpRequest(XHR)의 등장

6. Chatterbox server 만들기

  • 왜 안되는걸까 -> 왜 되는걸까..

Updated: