본문 바로가기
카테고리 없음

REST API

by 또개해삼 2021. 6. 30.

REST의 정의 "Reprsentational State Transfer"

  • 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
    • 1) 자원의 표현
      • 자원 : 해당 소프트웨어가 관리하는 모든 것
      • EX) 문서, 그림, 데이터, 해당 소프트웨어 자체 등
      • 자원의 표현 : 그 자원을 표현하기 위한 이름
      • EX) DB의 도시 정보가 자원일 때, 'gimpo'를 자원의 표현으로 정한다.
    • 2) 정보 전달
      • 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다.
      • JSON 또는 XML를 통해 데이터를 주고 받는 것이 일반적이다.
        • JSON , XML의 특징
          • -데이터를 저장하기 전달하기 위해 고안되었다.
          • -기계뿐만 아니라 사람도 쉽게 읽을 수 있다.
          • -계층적인 데이터 구조를 가진다.
          • -다양한 프로그래밍 언어에 의해 파싱될 수 있다.
          • -XMLHttpRequest 객체를 이용하여 서버로부터 데이터를 전송받을 수 있다.
  • REST는 웹의 기존 기술과 HTTP프로토콜을 그대로 활용하여 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
  • REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나다.

 

REST 구성 요소

  • 자원 : URI
    • 모든 자원에 고유한 ID가 있거, 이 자원은 Server에 존재
    • 자원을 구별하는 ID는 HTTP URL 이다.
    • Client는 URL을 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다.
  • 행위 : HTTP Method
    • HTTP 프로토컬 메소드인 GET,POST,PUT,DELETE와 같은 메서드를 사용한다.
  • 표현
    • Client가 자원의 상태에 대한 조작을 요청하면 Server는 이에 응답을 보낸다.

 

REST API의 정의

  • REST 기반으로 서비스 API를 구현한것 
  • API : 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것

REST API의 특징

  • 시스템들을 REST 기반으로 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
  • REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.

REST API 디자인 가이드

1.URL는 정보의 자원을 표현해야 한다.

2.자원에 대한 행위는 HTTP Method(GET,POST,PUT,DELETE)로 표현한다.

 

REST API 규칙

  • URI는 정보의 자원을 표현해야 한다. (리소스명은 동사보다 명사를 사용)
  • 자원에 대한 행위는 HTTP Method로 표현
  • EX) GET /members/delete/1 (x) -> GET /members/1

 

<HTTP Method의 역할>

Method 역할
POST POST를 통해 해당 URI를 요청하면 리소스를 새성한다.
GET GET를 통해 해당 리소스를 조회한다. 리소스를 조회하고 해당 도큐먼트에 대한 자세한 정보를 가져온다.
PUT PUT를 통해 해당 리소스를 수정한다.
DELETE DELETE를 통해 리소스를 삭제한다.

 

URI 설계 시 주의할 점

  • 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용
  • URI 마지막 문자로 슬래시(/)를 포함하지 않는다.
    • EX) http://restapi.example.com/gimpo/ (x) -> http://restapi.example.com/gimpo (o)
  • 하이픈(-)은 URI 가독성을 높이는데 사용
  • 밑줄(_)은 URI에 사용하지 않는다.
  • URI경로에 대문자 사용은 피한다.
  • 파일 확장자는 URI에 포함시키지 않는다 
    • EX) http://restapi.example.com/gimpo/photo.jpg (x)

자원을 표현하는 Collection과 Document

  • Document는 객체이며 Collection은 객체들의 집합이다.
  • 컬렉션과 도큐먼트는 모두 리소스라고 표현할수 있으며 URI에 표현된다.
    • EX) http://restapi.example.com/sports/soccer
    • sports라는 컬렉션과 soccer라는 도큐먼트로 표현된다.
    • 직관적인 REST API를 위해서는 컬렉션과 도큐먼트를 사용할 때 단수 복수도 지켜주면 이해하기 쉬운 URI 설계가 가능하다.

 

HTTP 응답 상태 코드

  • 1XX : 전송 프로토콜 수준의 정보 교환
  • 2XX : 클라이언트 요청이 성공적으로 수행돔
  • 3XX : 클라이언트 요청을 완료하기 위해 추가적인 행동을 취해야 함
  • 4XX : 클라이언트의 잘못된 요청
  • 5XX : 서버쪽 오류로 인한 상태코드

RESTful의 개념

  • RESTful은 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어
  • REST API를 제공하는 웹 서비스를 RESTful 하다고 할수 있다.
  • REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭된다.
  • 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것