[HTTP/NETWORK] REST API

Yuhallo·2023년 1월 31일
1

NETWORK

목록 보기
2/3
post-thumbnail

🧡 REST API

  • Representational State Transfer의 약자로, 웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식을 말합니다.

💚 REST API 디자인

  • 리차드슨은 REST API를 잘 적용하기위한 4단계의 성숙도 모델을 만들었습니다.

  • 실제로 2단계까지만 적용해도 좋은 API 디자인이라고 볼 수 있고, 이런 경우를 HTTP API라고 부릅니다.

성숙도 모델 0단계

  • 단순히 HTTP 프로토콜을 사용하기만 하면 됩니다. 물론 이를 REST API라고 할 수는 없고 REST API를 작성하기 위한 기본단계에 해당합니다.

성숙도모델 1단계

  • 개별 리소스와의 통신을 준수해야 합니다. 즉, 웹에서 사용되는 모든 데이터나 자원을 HTTP URI로 표현합니다.

  • 모든 자원은 개별 리소스에 맞는 엔드포인트를 사용해야하고, 요청하고 받는 자원에 대한 정보를 응답으로 전달해야합니다.

  • 엔드포인트 작성시에는 동사, HTTP 메서드, 혹은 행위에 대한 단어사용은 지양하고 리소스에 집중해 명사형태의 단어로 작성하는 것이 바람직합니다.

  • 응답으로 리소스를 전달할 때에도 리소스 정보와 성공/실패 여부를 반환해야합니다.

성숙도모델 2단계

  • CRUD에 맞게 작성한 HTTP 메서드를 사용합니다.

    🎀 HTTP 메서드 사용 규칙

    • GET : 서버의 데이터를 변화시키지 않는 요청에 사용합니다.
    • POST 메서드는 요청마다 새로운 리소스를 생성하고, PUT 메서드는 요청마다 같은 리소스를 반환(멱등)합니다. 둘을 구분하여 사용합니다.
    • PUT 메서드는 교체시에, PATCH 메서드는 수정의 용도로 구분하여 사용합니다.

성숙도모델 3단계

  • HATEOAS(Hypermedia As The Engine Of Application State)라는 하이퍼미디어 컨트롤을 적용합니다.

  • 응답에는 리소스 URI를 포함한 링크 요소를 삽입하여 작성합니다.

💚 Open API와 API Key

  • 정부에서 공공데이터에 쉽게 접근할 수 있도록 Open API 형태로 공공데이터를 제공하고 있습니다.
  • "Open" 글자 그대로 누구에게나 열려있는 API지만, 무제한으로 이용할 수 있다는 의미는 아닙니다. 이용수칙에 따라 제하사항이 있을 수 있습니다.
  • API 를 이용하기 위해서는 서버의 문을 여는 열쇠인 API Key가 필요합니다. 필요한 경우 로그인한 이용자에게 자원에 접근할 수 있는 권한을 API Key형태로 제공하고, 요청할 때 같이 전달해야 원하는 응답을 받을 수 있게 합니다.
profile
개발자가 되고 싶어 둥당둥당

0개의 댓글