38일차
TIL 210428 서버, 클라이언트
1. 클라이언트, 서버, API ?
- 클라이언트 서버 아키텍처(2티어 아키텍처) : 상품 정보와 같이 리소스가 존재하는 곳과, 리소스를 사용하는 앱을 분리시킨것
- 리소스를 사용하는 앱 = 클라이언트
- 리소스가 존재하는 곳 = 서버
- 보통 서버는 리소스를 전달하는 역할을 할 뿐, 리소스를 저장하는 공간은 따로 두는 것이 보통( 3티어 아키텍처)
- 리소스를 저장하는 공간 = 데이터 베이스
- 클라이언트와 서버 간의 통신은 요청과 응답으로 구성된다. 요청이 있어야만 응답이 온다.
- 프로토콜 = 통신 규약. 서버에 요청을 하기 위한 상호간 약속
- 웹 애플리케이션 아키텍처 에서는 클라이언트와 서버가 서로 HTTP라는 프로토콜을 이용해서 서로 대화를 나눈다.
- 프로토콜은 다양한 종류가 존재한다. 각자의 프로토콜마다 지켜야 하는 규약이 존재한다.
- 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 헤더 세트가 들어간다. 요청에 대한 설명
4. HTTP 상태코드
- 100번대 : 메시지 정보
- 200번대 : 요청성공
- 300번대 : 리다이렉션
- 400번대 : 클라이언트 에러
- 500번대 : 서버에러
- HTTP의 무상태성(stateless) 에 대하여: HTTP는 특정 상태를 담고 있지 않으며, 이전 요청이나 다음 요청을 기억하지 않음
5. AJAX : Asynchronous Javascript and XML
- 페이지 깜빡임 없이 seamless 하게 작동 하는, JS 와 DOM + 서버와 자유롭게 통신하는 XMLHttpRequest(XHR)의 등장
6. Chatterbox server 만들기