Skip to content

Latest commit

 

History

History
95 lines (66 loc) · 5.14 KB

REST_API.md

File metadata and controls

95 lines (66 loc) · 5.14 KB

REST API

REST란?

REST 정의

Representational State Transfer(REST)는 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 여기서 자원은 해당 소프트웨어가 관리하는 모든 것, 예를 들어 문서, 그림, 데이터, 소프트웨어 자체 등을 의미하고, 자원을 이름으로 구분한다는 것은 DB의 학생 정보가 자원일 때 'students'로 표현 하는 등 자원을 표현하기 위해 이름을 붙인다는 의미이다. 상태(정보) 전달은 데이터가 요청되어지는 시점에서 자원의 상태를 전달한다. JSON 혹은 XML을 통해 데이터를 주고 받는 것이 일반적.

HTTP URI(Uniform Resource Identifier)를 통해 자원을 명시하고, HTTP Method(GET,POST 등)을 통해 해당 자원에 대한 CRUD 작업을 적용하는 것을 의미한다. 즉, REST는 자원 기반의 구조 설계의 중심에 자원이 있고 HTTP Method를 통해 자원을 처리하도록 설계된 아키텍쳐를 의미한다.

REST의 장단점

장점

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

단점

  • 표준이 존재하지 않는다.
  • 사용가능한 method가 4가지 밖에 없다.
  • 브라우저를 통해 테스트할 일이 많은 서비스일 경우 URL보다 Header 값이 더 어렵게 느껴진다.
  • 구형 브라우저가 아직 제대로 지원해주지 못하는 부분이 존재한다.

구성 요소

  1. 자원(resource): URI

    • 모든 자원에는 고유한 ID가 존재하고, 이 자원은 서버에 존재한다.
    • 자원을 구분하는 ID는 HTTP URI이다.
    • 클라이언트는 URI를 이용해서 자원을 지정하고 해당 자원의 상태에 대한 조작을 서버에 요청한다.
  2. 행위(Verb): HTTP Method

    • HTTP Method를 이용하여 요청한다.
  3. 표현(Representation of Resource)

    • 클라이언트가 자원의 상태에 대한 조작을 요청하면 서버는 이에 적절한 응답을 보낸다.
    • REST에서 하나의 자원은 JSON, XML, TEXT 등 여러 형태의 표현으로 나타내어 질 수 있다.
    • json or XML를 통해 데이터를 주고 받는 것이 일반적

특징

  1. 서버-클라이언트 구조

    • REST server: API를 제공하고 비즈니스 로직 처리 및 저장을 책임진다.
    • client: 사용자 인증이나 세션, 로그인 정보 등을 직접 관리하고 책임진다.
    • 서로 간의 의존성이 줄어든다.
  2. Stateless(무상태)

  3. Cacheable(캐시 처리 가능)

    • 웹 표준 HTTP프로토콜을 그대로 사용하므로 웹으로 사용하는 기존 인프라를 그대로 활용할 수 있다.
    • 캐시 사용을 통해 응답시간을 빨라지고 REST server 트랜잭션이 발생하지 않기 때문에 전체 응답시간, 성능, 서버의 자원 이용률을 향상시킬 수 있다.
  4. Layered System(계층화)

    • 클라이언트는 REST API 서버만 호출한다.
    • REST 서버는 다중 계층으로 구성될 수 있다.
  5. Code-On-Demand

  6. Uniform Interface(인터페이스 일관성)

    • URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다.
    • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.

REST API란

  • API란?

    Application Programming Interface(API)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다. 데이터와 기능의 집합을 제공하여 프로그램간 상호작용을 촉진하며, 서로 정보를 교환 가능 하도록 한 것.

  • REST API는 REST 기반으로 서비스 API를 구현한 것.

  • 최근 OpenAPI(누구나 사용할 수 있도록 공개된 API: 구글 맵 등), 마이크로 서비스 등을 제공하는 업체 대부분은 REST API를 제공한다.

REST API의 특징

  • 사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지 보수 및 운용을 편리하게 할 수 있다.

  • REST는 HTTP 표준을 기반으로 구현하므로 HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.

REST API 설계 기본 규칙

  1. 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용한다.
  2. URI 마지막 문자로 슬래시(/)를 포함하지 않는다.
  3. 하이픈(-)은 URI 가독성을 높이는 데 사용
  4. 언더바(_)는 URI에 사용하지 않는다.
    • 밑줄은 가독성을 위해 사용하지 않는다.
  5. URI 경로에는 소문자가 적합
  6. 파일확장자는 URI에 포함하지 않는다.
  7. 리소스 간에 연관 관계가 있는 경우

Reference