REST : Representational State Transfer의 약자로 소프트웨어 프로그램 아키텍처
의 한 형식이다.
자원의 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다.
기본적으로 웹의 기존 기술과 HTTP 프로토콜에 한에서 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
좀 더 자세하게 알아보자면
ID 인 HTTP URL 을 부여하고, HTTP Method (GET, POST, PUT, DELETE)를 통해 해당 자원에 대한 CRUD 연산을 적용한다. 즉, REST는 자원 기반 구조 (ROA : Resource Oriented Architecture) 설계의 중심에 Resource가있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍처를 의미한다.
프론트가 없을 때,
/orders/order-id/1 과 같은 URL이다.자원을 식별할 수 있어야 한다.
URL (Uniform Resource Locator) 만으로 내가 어떤 자원을 제어하려고 하는지 알 수 있어야
한다.
Server가 제공하는 정보는 JSON 이나 XML 형태로 HTTP body에 포함되어 전송 시킨다.
| Method | 역할 |
|---|---|
| GET | 해당 리소스를 조회한다. |
| POST | 해당 URI를 요청하면 리소스를 생성한다. |
| PUT | 해당 리소스를 수정한다. |
| DELETE | 해당 리소스를 삭제한다. |
행위는 명시적이어야 한다.
REST는 아키텍쳐 혹은 방법론 과 비슷하다. 따라서 이런 방식을 사용해야 한다고 강제적이지
않다. 기존의 웹 서비스 처럼, GET을 이용해서 UPDATE와 DELETE를 해도 된다.
다만 REST 아키텍쳐에는 부합하지 않으므로 REST를 따른다고 할 수는 없다.
자기 서술적이어야 한다.
데이터에 대한 메타정보만 가지고도 어떤 종류의 데이터인지, 데이터를 위해서 어떤 어플리케
이션을 실행 해야 하는지를 알 수 있어야 한다.
즉, 데이터 처리를 위한 정보를 얻기 위해서, 데이터 원본을 읽어야 한다면 자기 서술적이지 못
하다.
클라이언트와 서버의 역할이 명확하게 구분된다.
| 구분 | 역할 |
|---|---|
| client | 사용자 인증이나 로그인 정보 등을 직접 관리하고 책임진다. |
| server | API를 제공하고 비지니스 로직 처리 및 저장을 책임진다. |
GET: http://restapi.exam.com/orders/2GET: /users/2/orders (일반적으로 소유의 관계를 표현할 때 사용)HATEOAS (Hypermedia as the Engine of Application State)
HATEOAS 는 서버가 독립적으로 진화할 수 있도록 서버와 서버, 서버와 클라이언트를 분리 할REST는 point-to-point 통신모델을 기본으로 한다. 따라서 서버와 클라이언트가 연결을 맺고 상호작용해야하는 어플리케이션의 개발에는 적당하지 않다.
REST는 URI, HTTP 이용한 아키텍처링 방법에 대한 내용만을 담고 있다. 보안과 통신규약 정책 같은 것은 전혀 다루지 않는다.
HTTP에 상당히 의존적 이다. REST는 설계 원리이기 때문에 HTTP와는 상관없이 다른 프로토콜에서도 구현할 수 있기는 하지만 자연스러운 개발이 힘들다.
CRUD 4가지 메소드만 제공한다.
출처 : https://velog.io/@somday/RESTful-API-%EC%9D%B4%EB%9E%80