REST API란 무엇일까?

💜poiuyy0420·2021년 1월 16일
1

API

목록 보기
1/1
post-thumbnail

REST API 위키 백과

REST 소개

2000년에 Roy Fielding은 웹 서비스를 디자인하는 아키텍처 접근 방식으로 REST(Representational State Transfer)를 제안했다.
REST는 어떤 기본 프로토콜과도 독립적이며 HTTP에 연결될 필요가 없다. 그러나 대부분의 일반적인 REST 구현에서 애플리케이션 프로토콜로 HTTP를 사용한다.

REST가 HTTP보다 우수한 주요 장점은 개방형 표준을 사용하므로 API 또는 클라이언트 애플리케이션의 구현이 특정 구현에 바인딩되지 않는다는 것이다.

REST 원리를 따르는 시스템은 종종 RESTful 이란 용어로 지칭된다.

REST API

REST란 어떤 자원에 대해 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 URI(Resource)로 요청을 보내는 것으로, Get, Post 등의 방식(Method)을 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태(Representation of Resource)로 표현된다.

REST 기반의 API를 웹으로 구현한 것이 RESTful API이다.

REST API 구성

REST API는 3가지 요소로 구성된다.

구성 요소표현 방법설명
자원(Resource)HTTP URI자원
행위(Verb)HTTP Method자원에 대한 행위
표현(Representations)HTTP URI자원에 대한 행위의 내용

RESTful API 기본 원칙

HTTP를 사용하는 RESTful API의 몇 가지 기본 디자인 원칙이다.

  1. REST API는 리소스 를 중심으로 디자인되며, 클라이언트에서 액세스할 수 있는 모든 종류의 개체, 데이터 또는 서비스가 리소스에 포함된다.

  2. 리소스마다 해당 리소스를 고유하게 식별하는 URI인 식별자가 있다.

https://works.com/orders/1
  1. 클라이언트가 리소스의 표현 을 교환하여 서비스와 상호 작용한다.
    많은 Web API가 교환 형식으로 JSON을 사용한다.
{"orderId":1,"orderValue":99.90,"productId":1,"quantity":1}
  1. REST API는 균일한 인터페이스를 사용하므로 클라이언트와 서비스 구현을 분리하는 데 도움이 된다. HTTP를 기반으로 하는 REST API의 경우 리소스에 표준 HTTP 동사 수행 작업을 사용하는 것이 균일한 인터페이스에 포함된단. 가장 일반적인 작업은 GET, POST, PUT, PATCH 및 DELETE 이다.

  2. 가능하다면 리소스 URI는 동사(리소스에 대한 작업)가 아닌 명사(리소스)를 기반으로 해야 한다. 또한, 리소스 URI를 컬렉션/항목/컬렉션 보다 더 복잡하게 요구하지 않는 것이 좋다.

https://works.com/orders (O)
https://works.com/create-order (X)

HTTP 메서드

HTTP 프로토콜은 요청에 의미 체계의미를 할당하는 다양한 메서드를 정의한다. 대부분의 RESTful 웹 API에서 사용하는 일반적인 HTTP 메서드는 다음과 같다.

  • GET 은 지정된 URI에서 리소스의 표현을 검색한다.
    응답 메시지의 본문은 요청된 리소스의 세부 정보를 포함하고 있다.

  • POST 는 지정된 URI에 새 리소스를 만든다.
    요청 메시지의 본문은 새 리소스의 세부 정보를 제공한다.

  • PUT 은 지정된 URI에 리소스를 만들거나 대체한다.
    요청 메시지의 본문은 만들 또는 업데이트할 리소스를 지정한다.

  • PATCH 는 리소스의 부분 업데이트를 수행한다.
    요청 본문은 리소스에 적용할 변경 내용을 지정한다.

  • DELETE 는 지정된 URI의 리소스를 제거한다.

리소스POSTGETPUTDELETE
/customers새 고객 만들기모든 고객 검색고객 대량 업데이트모든 고객 제거
/customers/1오류고객 1에 대한 세부 정보 검색고객 1이 있는 경우 고객 1의 세부 정보 업데이트고객 1 제거
/customers/1/orders고객 1에 대한 새 주문 만들기고객 1에 대한 모든 주문 검색고객 1의 주문 대량 업데이트고객 1의 모든 주문 제거

HTTP 상태 코드

  • GET
    200 : 성공적인 GET 메서드(정상)
    404 : 리소스를 찾을 수 없는 경우 메서드 (찾을 수 없음)

  • POST
    201 : 새 리소스를 만드는 경우 HTTP 상태 코드 (만들어 짐)
    200 : 메서드가 일부 처리를 수행하지만 새 리소스를 만들지 않는 경우
    204 : 반환할 결과가 없으면 메서드가 응답 본문 없음 (내용 없음)

  • PUT
    201 : POST 메서드와 마찬가지로 새 리소스를 만드는 경우 (만들어짐)
    200 : 메서드는 기존 리소스를 업데이트할 경우 (정상)
    204 : 메서드는 기존 리소스를 업데이트할 경우 (내용없음)
    409 : 상황에 따라 기존 리소스를 업데이트할 수 없는 경우, HTTP 상태 코드 409(충돌)를 반환하는 방안을 고려

  • PATCH
    415 : 지원되지 않는 패치 문서 형식 (지원되지 않는 미디어 형식)
    400 : 패치 문서의 형식이 잘못됨 (잘못된 요청)
    409 : 패치 문서가 유효하지만 현재 상태에서는 변경 내용을 리소스에 적용할 수 없음 (충돌)

  • DELETE
    204 : 삭제 작업이 성공하면 웹 서버는 프로세스가 성공적으로 처리되었지만 응답 본문에 추가 정보가 포함되지 않았음
    404 : 리소스가 없는 경우

profile
안녕하세요 :)

0개의 댓글