클라이언트와 서버 간의 통신은 요청과 응답으로 구성된다. 하지만 요청이 있어야만 응답이 온다.
예를 들어 주문하지 않은 커피가 갑자기 나오지 않는 것 처럼 주문이 들어가야 커피가 나온다.
이처럼 클라이언트-서버 아키텍처에서는 서버 마음대로 클라이언트에 리소스를 전달하지 않는다.
프로토콜
클라이언트와 서버간의 통신을 알려면 프로토콜이라는 개념을 알아야한다.
프로토콜은 통신 규약! 즉 약속이다. 손님이 주문을 받는 사람에게 외계어로 주문 할 수 없듯이 주문을 하기 위해서는 꼭 지켜야 할 약속이 몇가지 존재한다.
웹 애플리케이션 프로토콜: HTTTP
웹 애플리케이션 아키텍처에서는 클라이언트와 서버가 서로 HTTP라는 프로토콜을 이용해서 서로 대화를 나눈다.
주요 프로토콜
아래의 그림은 어떤 종류의 프로토콜이 있는지 볼 수 있다.
OSI 7 Layers는 컴퓨터공학과 네트워크에서 자주 등장하는 개념이다. 해당 프로토콜이 어떤 계층(layer)에 속해있는지를 표시하고 있다.
API
컴퓨터에게 요청 시, 정확한 주문 방법을 따라 요청 해야 한다. 이때 서버가 어떻게 구성되어 있는지 모른다면, 클라이언트는 어떻게 요청을 할 수 있을까?
- 위에 대한 정답이 바로 API(Application Programming Interface)이다. 서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스(interface)를 제공해 주어야 한다. 이것을 API이라고 한다.
서버는 리소스 전달을 위한 메뉴판, 즉 API 문서를 작성해야 클라이언트가 이를 활용할 수 있다. 보통 인터넷에 있는 데이터를 요청할 때에는 HTTP 프로토콜을 사용하며, 주소(URL,URI)를 통해 접근할 수 있다.
HTTP API 디자인을 잘 하는 방법
URL 디자인은 비교적 단순하나 "메서드"라는 개념이 등장한다.
HTTP 요청에는 메서드라는 것이 존재하며, 사용자 관리 API에서는 사용자를 추가 요청이나 지워달라고 요청 할 수도 있다.
HTTP 메서드는 리소스를 사용할때 적절하게 써야한다. 만약 요청 과 적절한 메소드가 일치 하지 않다면 좋은 API 디자인이라고 할 수 없다.