REST API

ohun·2022년 5월 27일
0

Network

목록 보기
1/1
post-thumbnail

REST 란?

  • 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.
  • REST 는 다음 3 가지로 구성되어 있다.
    • 자원(Resource) : HTTP URI
    • 자원에 대한 행위(Verb) : HTTP Method
    • 자원에 대한 행위의 내용(Representations) : HTTP Message Pay Load
  • 다시 말해서 REST 란 HTTP URI 를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해, 해당 자원(URI)에 대한 CRUD Operation 을 적용하는 것을 의미한다.

REST 의 장단점

장점

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
  • HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해 준다.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
  • Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
  • 여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

단점

  • 표준이 자체가 존재하지 않아 정의가 필요하다.
  • 사용할 수 있는 메소드가 4가지밖에 없다.
  • HTTP Method 형태가 제한적이다.
  • 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 정보의 값을 처리해야 하므로 전문성이 요구된다.
  • 구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많다.(익스폴로어)

REST API 란?

REST(Representational State Transfer) 아키텍처의 제약조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 뜻한다.

RESTful API 의 특징

RESTful API 를 통해서 요청이 수행될 때 RESTful API 는 리소스 상태에 대한 표현을 요청자에게 전송한다. 이 정보에는 몇 가지 형식이 있지만 주로 JSON 방식으로 사용된다.

RESTful API 는 다음 기준을 따라야 한다.

  • Server-Client(서버-클라이언트 구조)
    • 클라이언트-서버, 리소스로 구성되었으며 요청이 HTTP 를 통해 관리되는 클라이언트-서버 아키텍처이다.
  • Stateless(무상태)
    • 요청 간에 클라이언트 정보가 저장되지 않으며, 각 요청이 분리되어 있고 서로 연결되어 있지 않아야 한다.
  • Casheable(캐시 처리 가능)
    • 클라이언트-서버 상호 작용을 간소화하는 캐시 가능 데이터여야 한다.
  • Layered System(계층화)
    • 요청된 정보를 검색하는 데 관련된 서버(보안, 로드 밸런싱 등 담당)의 각 유형을 클라이언트가 볼 수 없는 계층 구조로 체계화하는 계층화된 시스템이어야 한다.
  • Uniform Interface(인터페이스 일관성)
    • 정보가 표준 형식으로 전송되도록 하기 위한 구성 요소 간 통합 인터페이스여야 한다. 여기에는 다음 기준이 만족되어야 한다.
      • 요청된 리소스가 식별 가능하며 클라이언트에 전송된 표현과 분리되어야 한다.
      • 수신한 표현을 통해 클라이언트가 리소스를 조작할 수 있어야 한다.(충분한 정보가 표현에 포함되었기 때문)
      • 클라이언트에 반환되는 자기 기술적 메시지에 클라이언트가 정보를 어떻게 처리해야 할지 설명하는 정보를 충분히 포함해야 한다.
      • 클라이언트가 리소스에 액세스한 후 하이퍼링크를 사용해 현재 수행 가능한 기타 모든 작업을 찾을 수 있어야 한다.

REST API 설계 규칙

  1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용해야 한다.
  2. 마지막에 슬래시(/)를 포함하지 않는다.
  3. 언더바 대신 하이폰(-)을 사용한다.
  4. 파일확장자는 URI에 포함하지 않는다.
  5. 행위를 포함하지 않는다.(delete-post X / post O)
profile
공부 중입니다.

0개의 댓글