1.HTTP Messages
-HTTP는 HyperText Transfer Protocol의 줄임말로, HTML과 같은 문서를 전송하기 위한 Application Layer 프로토콜
-전통적인 클라이언트-서버 모델에서 클라이언트가 HTTP messages 양식에 맞춰 요청을 보내면, 서버도 HTTP messages 양식에 맞춰 응답함
-HTTP messages는 클라이언트와 서버 사이에서 데이터가 교환되는 방식으로 다음와 같은 두 가지 유형이 있음
(1)요청(Requests)
(2)응답(Responses)
-요청(Requests)과 응답(Responses)은 다음과 같은 유사한 구조를 가짐
(1)start line : 요청이나 응답의 상태를 나타내며 항상 첫 번째 줄에 위치함. 응답에서는 status line이라고 부름
(2)HTTP headers : 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더의 집합
(3)empty line : 헤더와 본문을 구분하는 빈 줄
(4)body : 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함하며 요청과 응답의 유형에 따라 선택적으로 사용함
+HTTP의 가장 큰 특징, 무상태성(Statless) : HTTP로 클라이언트와 서버가 통신을 주고받는 과정에서, HTTP가 클라이언트나 서버의 상태를 확인하지 않음
2.REST API(Representational State Transfer API)
-웹 애플리케이션에서는 HTTP 메서드를 이용해 서버와 통신함. 클라이언트와 서버가 HTTP 통신을 할 때는 어떤 요청을 보내고 받느냐에 따라 메서드의 사용이 달라짐
-요청과 응답을 할 때, '제대로 보내고 받을 수 있는' 일종의 규약이 존재
-REST API는 웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식을 말함
2-1.좋은 REST API를 디자인하는 방법
(1)REST 성숙도 모델 - 0단계
-HTTP 프로토콜을 사용하기
(2)REST 성숙도 모델 - 1단계
-개별 리소스와의 통신을 준수
-모든 자원은 개별 리소스에 맞는 엔드포인트(Endpoint)를 사용해야 한다는 것과 요청하고 받은 자원에 대한 정보를 응답으로 전달해야 한다는 의미
-어떤 리소스를 변화시키는지 혹은 어떤 응답이 제공되는지에 따라 각기 다른 엔드포인트를 사용하기 때문에, 적절한 엔드포인트를 작성하는 것이 중요
-엔드포인트 작성 시에는 동사, HTTP 메서드, 혹은 어떤 행위에 대한 단어 사용은 지양하고, 리소스에 집중해 명사 형태의 단어로 작성하는 것이 바람직한 방법
(3)REST 성숙도 모델 - 2단계
-CRUD에 맞게 적절한 HTTP 메서드를 사용하는 것에 중점
-메서드 사용 규칙
[1]GET 메서드 같은 경우는 서버의 데이터를 변화시키지 않는 요청에 사용
[2]POST는 요청마다 새로운 리소스를 생성하고 PUT 은 요청마다 같은 리소스를 반환
*매 요청마다 같은 리소스를 반환하는 특징을 멱등(idempotent)하다고 하며, 멱등성을 가지는 메서드 PUT과 그렇지 않은 POST는 구분하여 사용해야 함
[3]PUT은 교체, PATCH는 수정의 용도로 사용
(4)REST 성숙도 모델 - 3단계
-3단계는 HATEOAS(Hypertext As The Engine Of Application State)라는 약어로 표현되는 하이퍼미디어 컨트롤을 적용
-요청은 2단계와 동일하지만, 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성한다는 것이 차이점
3.Open API
-누구에게나 열려있는 API지만 기관이나 API마다 정해진 이용 수칙이 있고, 그 이용 수칙에 따라 제한사항(가격, 정보의 제한 등)이 있음
-정부는 공공데이터에 쉽게 접근할 수 있도록 Open API의 형태로 제공하고 있음
+API를 이용하기 위해서는 서버의 문을 여는 열쇠인 API Key가 필요함
+클라이언트의 요청에 따라 서버에서 응답한다는 말은 결국 서버를 운용하는 데에 비용이 발생한다는 말로 서버 입장에서 아무런 조건 없이 익명의 클라이언트에게 데이터를 제공할 의무도, 이유도 없음
*로그인된 이용자에게만 자원에 접근할 수 있는 권한을 API Key의 형태로 제공하고, 데이터를 요청할 때 API key를 같이 전달해야만 원하는 응답을 받을 수 있음
-이미지 및 내용 출처 : code states
'부트캠프' 카테고리의 다른 글
관계형 데이터베이스 part2 (0) | 2023.01.31 |
---|---|
관계형 데이터베이스 part1 (0) | 2023.01.30 |
네트워크 - 웹 애플리케이션 작동원리 part2 (0) | 2023.01.30 |
네트워크 - 웹 애플리케이션 작동원리 part1 (0) | 2023.01.26 |
자료구조/알고리즘 - 알고리즘 part2 (0) | 2023.01.25 |