REST API

CH_Hwang·2021년 12월 7일
0

CS

목록 보기
2/10

REST API란?

REST 아키텍처의 제약 조건을 준수하는 Application Programming Interface(API)
이때, REST는 Representational State Tranfer의 줄임말.

  • 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것.

REST란

  • HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
  • HTTP Method(POST, GET, PUT, DELETE)를 통해
  • 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미

REST 구성 요소

  • 자원(Resource): HTTP URI
  • 자원에 대한 행위(Verb): HTTP Method
  • 자원에 대한 행위의 내용 (Representations): HTTP Message Pay Load

REST의 특징

  • Server-Client(서버-클라이언트 구조)
    • REST API 디자인에서 클라이언트와 서버 애플리케이션은 서로 간에 완전히 독립적이어야함.
      클라이언트 애플리케이션이 알아야 하는 유일한 정보는 요청된 리소스의 URI이며, 이는 다른 방법으로 서버 애플리케이션과 상호작용 할 수 없음.
      이와 유사하게 서버 애플리케이션은 HTTP를 통해 요청된 데이터에 전달하는 것 말고는 클라이언트 애플리케이션을 수정하지 않아야 함
  • Stateless(무상태)
    • 각 요청에서 이의 처리에 필요한 모든 정보를 포함해야 함
      서버측 세션을 필요로 하지 않으며 서버 애플리케이션은 클라이언트 요청과 관련된 데이터를 저장할 수 없음
  • Cacheable(캐시 처리 가능)
    • 리소스를 클라이언트 또는 서버측에서 캐싱할 수 있어야함
      또한 서버 응답에 전단된 리소스에 대해 캐싱이 허용되는지 여부에 대한 정보도 포함되어야 함.
      서버측의 확장성 증가와 함께 클라이언트 측의 성능 향상을 동시에 얻는 것
  • Layerd System(계층화)
    • REST API에서는 호출과 응답이 서로 다른 계층을 통과함. 일반적으로 클라이언트와 서버 애플리케이션이 서로 간에 직접 연결되지 않으며 통신루프에는 다수의 서로 다른 중개자가 있을 수 있음.
      REST API는 엔드 애플리케이션 또는 중개자와 통신하는지 여부를 클라이언트나 서버가 알 수 없도록 설계되어야함.
  • Uniform Interface(인터페이스 일관성)
    • 요청이 어디에서 오는지와 무관하게 동일한 리소스에 대한 모든 API 요청은 동일하게 보여야 함.
      REST API 는 사용자의 이름이나 이메일 주소 등의 동일ㄹ한 데이터 조각이 오직 하나의 URI에 속함을 보장해야함. 리소스가 너무 클 필요는 없지만, 이는 클라이언트가 필요로 하는 모든 정보를 포함해야함
  • Code Ondemand(옵션)
    • 일반적으로 정적 리소스를 전송하지만 특정한 경우 응답에 실행코드를 포함할 수 있음. 이 경우, 코드는 요청 시에만 실행되어야 함

REST의 장단점

  • 장점
  1. HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다.

  2. HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해준다.

  3. HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다

  4. Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.

  5. REST API 메세지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.

  6. 여러가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.

  7. 서버와 클라이언트의 역할을 명확하게 분리한다.

  • 단점
  1. 표준이 존재하지 않아 정의가 필요하다.

  2. 사용할 수 있는 메소드가 제한적이다.

  3. 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 정보의 값을 처리해야 하므로 전문성이 요구된다.

  4. 구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많다.

REST API 설계 예시

  • URI는 동사보다 명사를, 대문자보다는 소문자를 사용하여야 한다.

    잘못된 예: .../Running/
    좋은 예: .../run

  • 마지막에 슬래시를 포함하지 않는다

    잘못된 예: .../test/
    좋은 예: .../test

  • 언더바 대신 하이픈을 사용한다.

    잘못된 예: .../test_blog
    좋은 예: .../test-blog

  • 파일확장자는 RUI에 포함하지 않는다.

    잘못된 예: .../photo.jpg
    좋은 예: .../photo

  • 행위를 포함하지 않는다.

    잘못된 예: .../delete-post/1
    좋은 예: .../post/1

0개의 댓글