REST API

woong·2022년 10월 6일
0

REST API

  • REST: Representational State Transfer의 약자로, 로이 필딩 (Roy Fielding)의 박사학위 논문에서 웹(http)의 장점을 최대한 활용할 수 있는 아키텍처로써 처음 소개되어짐.

  • REST API: 웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식

    HTTP 프로토콜을 기반으로 요청과 응답으로 리소스를 주고받기 위해서는 알아보기 쉬우며 잘 작성된 메뉴판이 필요한데, 이 역할을 API가 수행하므로 모두가 잘 알아볼 수 있도록 작성하는 것이 중요하다.


Richardson의 성숙도 모델

엄밀하게 3단계까지 지키기 어렵기 때문에 2단계까지만 적용해도 좋은 API 디자인이라고 볼 수 있음. (HTTP API)

🧑‍💻 0단계

  • 0단계에서는 단순히 HTTP 프로토콜을 사용하는 것에 의의.
  • REST API라고 할 수는 없으며, REST API를 작성하기 위한 기본 단계.

🧑‍💻 1단계

  • REST 성숙도 모델에 따르면, 1단계에서는 개별 리소스(Resource)와의 통신을 준수해야 함.
  • 개별 리소스에 맞는 엔드포인트(Endpoint)를 사용해야함.
  • 요청하고 받는 자원에 대한 정보를 응답으로 전달해야 한다.
  • 리소스에 대한 정보와 함께 리소스 사용에 대한 성공/실패 여부를 반환.

🧑‍💻 2단계

  • CRUD에 맞게 적절한 HTTP 메서드를 사용해야 함.
  • HTTP 메서드 사용 시 지켜야 할 규칙
    ⇢ GET 메서드 : 서버의 데이터를 변화시키지 않는 요청에 사용
    ⇢ POST 메서드: 요청마다 새로운 리소스 생성
    ⇢ PUT 메서드: 요청마다 같은 리소스 반환 (멱등, idempotent)
    ⇢ PUT 메서드는 교체, PATCH 메서드는 수정의 용도.

🧑‍💻 3단계

HATEOAS (Hypertext As The Engine Of Application State) 라는 약어로 표현되는 하이퍼미디어 컨트롤을 적용.

  • 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성해야 함.
  • 응답 내에 새로운 링크를 넣어 새로운 기능에 접근할 수 있도록 함.

Open API

  • 누구에게나 열려 있는 API를 말하는데, 그렇다고 무제한으로 이용할 수 있다는 의미는 아님.
  • API마다 정해진 이용 수칙이 있고, 그에 따라 제한사항(가격, 정보의 제한)이 있을 수 있음.

API key

  • API를 이용하기 위해서 필요한 것. (서버의 문을 여는 열쇠)
  • 서버 입장에서 아무 조건 없이 익명의 클라이언트에게 데이터를 제공할 의무는 없음.
  • API key가 필요한 경우에는 로그인한 이용자에게 자원에 접근할 수 있는 권한을 API key 형태로 제공하고, 데이터를 요청할 때 API key를 같이 전달해야 원하는 응답을 받을 수 있음.
  • (가끔 API key가 필요하지 않은 경우도 있음.)

0개의 댓글