[HTTP] REST API

·2022년 10월 4일
0

API

API(Application Programming Interface) : 응용 프로그래밍 인터페이스
소프트웨어 프로그램이 다른 소프트웨어 프로그램으로 데이터를 전송할 수 있도록 하는 일련의 규칙.

REST API

REST(Representational State Transfer)

  • 웹에서 사용되는 데이터나 자원(리소스)를 HTTP URI로 표현
  • 리소스에 대한 행위는 HTTP 메서드로 정의한다.
  • 보다 RESTful한 API란 리소스와 메서드만으로 무엇을 하는지 알 수 있도록 하는 것을 말한다.
  • 리소스는 명사형을 추구한다. (create_member (x), members(o))

REST API 성숙도 모델


총 4단계로 이루어져 있으나 이것을 다 지키기는 매우매우 어려움! 이렇게 하려고 노력해야 하지만 완벽하게 하기는 어렵다.

  • 0단계 : 단순 HTTP 프로토콜 사용. 해당 단계만으로는 REST API라고는 할 수 없다.

  • 1단계 : 개별 리소스와의 통신을 준수. 개별 리소스에 맞는 엔드포인트를 사용해야 하며, 요청하고 받은 자원에 대한 정보를 응답으로 전달해야 한다.

    엔드포인트 : 요청을 받아 응답을 제공하는 서비스를 사용할 수 있는 지점
    ex) 회원을 추가하려 한다 -> 엔드포인트 : /members

  • 2단계 : CRUD에 맞게 적절한 HTTP 메서드를 사용하는 것.

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

    • 요청은 2단계와 동일하지만, 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성한다.

CRUD

CREATE

  • POST : 지정된 리소스를 제출하여 서버에 저장한다.

READ

  • GET : 서버의 저장된 특정 정보를 불러온다. (BODY X)

UPDATE

  • PUT : 서버의 저장된 정보를 교체한다. (전체적으로)
  • PATCH : 서버의 저장된 정보를 수정한다. (부분적으로)

DELETE

  • DELETE : 서버에 저장된 정보를 삭제한다.

HTTP 메서드 더보기

추가적인 정보

  • 무한 스크롤을 이용해 추가적인 정보를 불러올 경우 작성해야 할 엔드포인트는?
    • GET /tweets?offset=10&limit=10
    • 수백개의 정보를 한번에 응답받기에는 상당한 양의 payload가 전달되므로 페이지네이션을 이용해 정보의 목록을 끊어주는게 좋다.
    • offset, limit는 query parameter로 사용된다.
  • 특정 위치를 기반으로 한 모든 식당의 목록에서 한식만 필터링하는 엔드포인트는?
    • GET /restaurants?coordinate=126.9178889,37.5561619&type=korean
    • 위치 기반으로 한 모든 식당을 찾으려면 중심이 될 좌표를 query parameter로 사용
    • 해당 리소스의 필터링 조건을 query parameter로 전달하는 것이 바람직하며 한식임을 나타내기 위해 type=korean을 추가
profile
🧑‍💻백엔드 개발자, 조금씩 꾸준하게

0개의 댓글