리소스를 사용하는 앱을 클라이언트 리소스를 제공(serve)하는 곳을 서버라고 부르며 클라이언트와 서버는 요청과 응답을 주고받는다.
클라이언트는 보통 플랫폼에 따라 구분된다.
서버는 무엇을 하느냐에 따라 종류가 달라진다.
데이터베이스도 데이터 제공자로서 일하므로 일종의 서버라고 볼 수 있다.
클라이언트와 서버 간의 통신을 알기위해 프로토콜에 대한 이해가 필요하다. 프로토콜은 통신 규약, 즉 서버와 클라이언트가 원활하게 메세지를 주고받기 위한 규칙이다.
웹 애플리케이션 아키텍처에서는 클라이언트와 서버가 서로 HTTP라는 프로토콜을 이용해서 서로 메세지를 주고 받는다. HTTP를 이용해 주고받는 메시지는 HTTP 메시지라고 부른다.
커피 주문에 비유하자면 메뉴를 주문할 때 알아서 맛있는거 주세요!라는 요청은 컴퓨터에서 허용하지 않는다. 정확한 메뉴를 요청해야한다. 어떻게 해야 서버에 있는 사용 가능한 리소스 즉 메뉴를 파악할 수 있을까? 여기서 필요한게 바로 API(Application Programming Interface)이다.
서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스를 제공해 줘야하고 이것을 API라고 부른다. 위에 상황에 비유하자면 메뉴판이라고 볼 수 있다.
보통 인터넷에 있는 데이터를 요청할 때는 HTTP라는 프로토콜을 사용하며 주소(URL, URI)를 통해 접근할 수 있다. 주소 안에는 클라이언트에서 요청과 함께 값을 보내기 위해 파라미터를 사용한다. 이 때 ?(물음표)와 &(앰퍼샌드)기호를 사용한다.
HTTP 요청에는 메서드라는 것이 존재하며 CRUD 각각의 행동과 일치하는 종류가 있다.