Zero To One
2) HTTP를 이용한 클라이언트-서버 통신과 API 본문
1) 클라이언트와 서버의 통신
- 클라이언트와 서버 간의 통신은 요청과 응답으로 구성.
- 요청이 있어야지 응답이 옴.
- 클라이언트-서버 아키텍처에서는 서버 마음대로 클라이언트에 리소스를 전달하지 않는다.
2) 프로토콜(Protocol)
- 통신하는 서로 다른 두 장치간에 협의된 규칙. 즉, 약속
- 웹 애플리케이션 프로코톨 : HTTP
3) OSI 7 Layer
- OSI 7 Layer에서 응용계층(Application)에 해당되는 프로토콜
- HTTP : 웹에서 HTML, JSON 등의 정보를 주고 받는 프로코톨
- HTTPS : HTTP에서 보안이 강화된 프로토콜
- FTP : 파일 전송 프로토콜
- SMTP : 메일을 전송하기 위한 프로토콜
- SSH : CLI환경의 원격 컴퓨터에 접속하기 위한 프로토콜
- RDP : Window 계열의 원격 컴퓨터에 접속하기 위한 프로토콜
- WebSocket : 실시간 통신, Push 등을 지원하는 프로토콜
- OSI 7 Layer에서 전송계층(Transport Layer)에 해당되는 프로토콜
- TCP : HTTP,FTP 통신 등의 근간이 되는 인터넷 프로토콜
- UDP : (양방향 TCP와는 다르게) 단방향으로 작동하는 훨씬 더 빠르고 단순하지만, 신뢰성이 낮은 인터넷 프로토콜
4) API (Appliication Programming Interface)
- 서버에는 마치 식당에서 메뉴판을 제공하듯, 리소스를 잘 활용할 수 있도록 인터페이스를 제공해줘야 한다.
- Interface : 의사소통이 가능하도록 만들어진 접점 (메뉴판)
- 서버 != 인터페이스 : API는 앱이 요청할 수 있고 프로그래밍 가능하다는 점에서 인터페이스와는 다르다
5) HTTP API 디자인에는 Best Practice가 존재한다.
Endpoint | Method | Action |
/users | GET | 유저 목록 |
/users | POST | 유저 생성 |
/users/:id | GET | 유저 조회 |
/users/:id | PUT | 유저 수정 |
/users/:id | DELETE | 유저 삭제 |
/posts | GET | 포스트 목록 |
/posts?userId={id} | GET | 유저별 포스트 목록 |
/posts | POST | 포스트 생성 |
/posts/:id | GET | 포스트 조회 |
/posts/:id | PUT | 포스트 수정 |
/posts/:id | DELETE | 포스트 삭제 |
/todos | GET | 할 일 목록 |
/todos?userId={id} | GET | 유저별 할 일 목록 |
/todos | POST | 할 일 생성 |
/todos/:id | GET | 할 일 조회 |
/todos/:id | PUT | 할 일 수정 |
/todos/:id | DELETE | 할 일 삭제 |
/comments | GET | 댓글 목록 |
/comments?userId={id} | GET | 유저별 댓글 목록 |
/comments?postId={id} | GET | 포스트별 댓글 목록 |
/comments/:id | GET | 댓글 조회 |
/comments/:id | PUT | 댓글 수정 |
/comments/:id | DELETE | 댓글 삭제 |
요청 | 적절한 매소드 |
조회 (Read) | GET |
추가 (Create) | POST |
갱신 (Update) | PUT 또는 PATCH |
삭제 (Delete) | DELETE |
https://developer.mozilla.org/ko/docs/Web/HTTP/Messages#http_%EC%9A%94%EC%B2%AD
'웹서비스 개발 기초' 카테고리의 다른 글
HTTP 요청 메서드, HTTP 상태 코드 (0) | 2022.02.16 |
---|---|
5) 도메인과 DNS (0) | 2022.02.15 |
4) IP, Port (0) | 2022.02.15 |
3) URL과 URI (0) | 2022.02.15 |
1) 클라이언트-서버 아키텍쳐 (0) | 2022.02.15 |