개요
HTTP 에서 사용하는 클라이언트 - 서버 아키텍쳐와 통시하는 방법인 API에 대해 학습힙니다.
학습 목표
- 클라이언트-서버 아키텍처를 이해할 수 있다.
- HTTP를 이용한 클라이언트-서버 통신을 이해할 수 있다.
- API의 개념을 이해할 수 있다.
클라이언트-서버 아키텍처
Client
- 리소스를 사용하는 앱
- 손님은 아메리카노를 마시기 위해 리소스를 가지고 있는 점원에게
요청
합니다.
Server
- Serve(제공) 하는 주체
- 점원은 손님의 요청에 따라 리소스를 담아
응답
합니다.
Client-Server Architecture (2 Tier Architecture)
- 1) 리소스가 존재하는 곳 2) 사용하는 앱을 분리시킨 것
- 클라이언트와 서버는 요청과 응답을 주고받는 관계입니다.
- 요청이 선행되고 그 후에 응답이 옵니다.
Database
- 창고와 같은 역할
- 리소스를 저장하는 별도의 공간
3 Tier Architecture
- 2 티어 아키텍처(서버-클라이언트 아키텍처)에 데이터베이스가 추가된 형태입니다.
- 일반적으로 서버는 리소스를 전달해 주는 역할만 담당합니다.
Client 의 종류
- 웹 사이트, 웹 앱 (브라우저)
- 앱 (모바일, 데스크탑)
클라이언트-서버 통신과 API
클라이언트-서버 통신
- 요청과 응답으로 구성됩니다.
- 요청이 있어야만 응답이 옵니다.
- 클라이언트-서버 아키텍처에서는 서버 마음대로 클라이언트에 리소스를 전달하지 않습니다.
Protocol (프로토콜)
- 통신 규약 (약속)
- 손님이 점원에게 외계어로 주문을 할 수 없듯, 주문을 하기 위해 꼭 지켜야 하는 약속
- 주문하기 1) 앱 이용 2) 키오스크 이용 등 다양한 방법이 있듯이 프로토콜은 다양합니다.
- 각 프로토콜마다 지켜야하는 규약이 존재합니다.
주요 Protocol
- OSI 7계층
- 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것입니다.
- 7단계 중 특정한 곳에 이상이 생기면 다른 단계를 건드리지 않고 해당 단계만 고칠 수 있습니다.
HTTP (Hyper Text Transfer Protocol)
- 가장 많이 쓰이는 클라이언트-서버 통신 프로토콜
- 클라이언트-서버는
HTTP 메시지
를 주고받으며 대화합니다.
Interface
- "의사소통이 가능" 하도록 만들어진 "접점"
- 메뉴목록도 인터페이스입니다.
API (Application Programming Iterface)
- 서버가 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스를 제공해 주는 것 입니다.
- 앱이 요청할 수 있고 프로그래밍 가능한 인터페이스입니다.
- 스타벅스에서 콜드브루, 아메리카노와 같은 메뉴목록(인터페이스)을 만들어 놓았기 때문에 고객이 적절한 요청을 할 수 있는 것과 같은 의미입니다.
- 컴퓨터에게 요청할 때는
정확한 주문 방법
을 따라 요청해야 합니다.
- 서버가 리소스 전달을 위한 메뉴판, 즉 API를 구축해놓아야 클라이언트가 이를 활용 할 수 있습니다.
- 보통 인터넷에 있는 데이터를 요청할 때에는 HTTP 프로토콜을 사용하며 주소(URL, URI)를 통해 접근할 수 있게 됩니다
URL 디자인 예제
HTTP API 디자인
- HTTP API 디자인에는 Best Practice 가 존재합니다.
- URL 디자인은 비교적 단순하나 "메서드"라는 개념이 등장합니다.
- CRUD 각각의 행동과 일치하는 HTTP 메서드의 종류가 존재합니다.
- GET : READ
- POST : UPDATE
- PUT : UPDATE
- PATCH : UPDATE
- DELETE : DELETE
참조
코드스테이츠 프론트엔드 부트캠프