02. REST API

마라탕천재 ㅣ 2024. 6. 18. 00:44

1. REST란?

REST(Representational State Transfer)는 월드와이드 웹(WWW)와 같은 분산 하이퍼미디어 시스템 아키텍쳐의 한 형식이다. 주고 받는 자원에 이름을 규정하고 URI에 명시해 HTTP 메서드(GET, POST, PUT, DELETE)를 통해 해당 자원의 상태를 주고받는 것을 의미함.

 

2. REST API란?

REST 아키텍처 스타일을 따르는 웹서비스 API를 의미하며, REST 아키텍쳐를 구현하는 웹 서비스를 'RESTful 하다'라고 표현한다.

 

3. REST의 특징

  1. 유니폼 인터페이스 : REST API에서 리소스를 접근하고 조작하는 방식이 일관되고 표준화되어야 한다는 원칙이다.
  2. 무상태성 : REST의 무상태성은 서버가 클라이언트의 상태를 저장하지 않고, 모든 필요한 데이터를 요청 메시지에 포함시켜 각 요청/응답 주기를 완전히 독립적으로 처리함으로써 확장성과 서버 부하 감소의 이점을 제공하는 특징이다.
  3. 캐시가능성 : 서버에서 제공된 데이터(응답)를 클라이언트나 중간 매체에 저장해두고, 동일한 요청이 들어올 때 저장된 데이터를 바로 내려주는 기능이다.

    무상태성 vs 캐시가능성 : 무상태성은 서버 측면에서 상태를 저장하지 말라는 것이고, 캐시 가능성은 클라이언트나 프록시 등의 중개자 측면에서 상태를 저장해도 된다는 의미이다.

  4. 레이어시스템 : REST 서버는 네트워크 상의 여러 계층으로 구성될 수 있다. 예를 들어, 라이언트 - 프록시 - 웹서버 - 데이터베이스 서버의 구조가 있다.
  5. 클라이언트 - 서버 아키텍쳐 : REST 서버는 API를 제공하고 클라이언트는 사용자 정보를 관리하는 구조로 분리해 설계한다.

 

4. REST의 URI 설계 규칙

  1. 계층적 구조
    ex)  https://api.example.com/users/1234/orders
  2. 명사 사용
    ex) https://api.example.com/users( O )
          https://api.example.com/getusers ( X )
  3. 소문자 사용
    ex) https://api.example.com/users
  4. 하이픈 사용
    ex) https://api.example.com/first-names
  5. 확장자 사용 자제
    ex) https://api.example.com/users ( O, Accept 헤더로 표현 형식 지정)
          https://api.example.com/users.json ( X )
  6. 쿼리 문자열 사용
    ex) https://api.example.com/users?page=1&sort=name