목차
1. REST란
2. REST API란
3. REST 구성요소
4. REST의 특징
5. REST의 장단점
6. REST API 예제
1. REST란 ?
REST(REpresentational State Transfer)란, “웹에 존재하는 모든 자원(이미지, 동영상, DB 자원)에 고유한 URI를 부여해 활용”하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미한다고 한다. 이런 REST의 형식을 따른 시스템을 RESTful 이라고 부른다. 쉽게 말해 컴퓨터 시스템들의 대화법이다.
2. REST API란
HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한
CRUD Operation을 적용한다.
HTTP Method, CRUD Operation.
3. REST 구성요소
1. 자원 (Resource), URI
모든 자원은 고유한 ID를 가지며, 이는 서버에 저장되어 있다.
클라이언트는 자원의 상태를 조작하기 위해 요청을 보낸다.
HTTP에서 이러한 자원을 구별하는 ID는 'Uesrs/1' 같은 HTTP URI이다.
2. 행위 (Verb), Method
클라이언트는 URI를 이용해 자원을 지정하고 자원을 조작하기 위해
HTTP Method를 사용한다. 대표적으로 GET, POST, PUT, DELETE 메소드들이 있다.
3. 표현 (Representation)
클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 자원의 상태를 Representation이라고
한다. 자원의 형태는 JSON, XML, Text, RSS 등 여러형태로 나타낸다.
4. REST의 특징
1. 클라이언트 - 서버 구조
자원을 요청하는 Client, 자원이 있는 Server 구조를 갖는다.
2. 무상태 (Stateless)
HTTP는 Stateless 프로토콜이므로, REST 역시 무상태성을 따른다.
즉, 서버는 클라리언트의 Context를 저장하지 않는다.
3. 캐시 처리 가능 (Cacheable)
웹 표준 HTTP 프로토콜 기반이므로, 웹에서 사용하는 기존의 인프라를 그대로 활용한다.
4. 계층화
API서버는 순수 비지니스 로직을 수행하고 그 앞단에 사용자 인증, 암호화, 로드밸런싱 등을
하는 계층을 추가하여 구조상의 유연성을 줄 수 있다.
5. 인터페이스 일관성 (Uniform Interface)
URI로 지정한 자원에 대한 조작을 통일되고 한정정적인 인터페이스로 수행한다.
HTTP 표준에만 따른다면 모든 플랫폼에서 사용가능하다.
6. 자체 표현 구조
동사 (Method) + 명사(URI) 로 이루어져 있어 어떤 메소드에 무슨 행위를 하는지 알 수 있다.
즉 REST API 메세지 자체만으로도 API를 파악할 수 있다.
5. REST API 장단점
장점
1. 쉬운 사용
HTTP 프로토콜 인프라를 사용하여 별도로 인프라를 구축하지 않아도 된다.
2. 클라이언트 - 서버의 역할을 명확히 분리
클라이언트는 REST API를 통해 서버와 정보를 주고받는다.
REST의 Stateless 특징에 따라 서버는 클라이언트의 Context를 유지하지 않는다.
3. 특정 데이터 표현을 사용가능
REST API는 헤더 부분에 URI처리 메소드를 명시하고,
필요한 데이터를 'body'에 담는다. JSON, XML, Text 등
원하는 Representation 언어로 사용가능하다.
단점
1. 제한적인 메소드
REST는 HTTP 메소드를 이용하여 URI를 표현한다.
사용은 간단하지만 메소드의 형태가 제한적인 단점이 있다.
2. 표준의 부재
REST는 설계 가이드일 뿐, 표준이 존재하지 않는다.
6. REST 예제
HTTP BODY에 추가해서 해당 URL에 해당 Method로 요청하는 것이 핵심이다.
3-1 사용자 생성
HTTP POST, http://myweb/users/
{
"name":"pyo",
"address":"seoul",
"gender":"male"
}
POST와 사용자를 나타내는 리소스에 생성할 데이터를 JSON형식으로 Body에 포함시켜 요청합니다.
성공여부를 true, false, error message 등을 이용하여 받습니다.
3-2 사용자 조회
HTTP GET, http://myweb/users/
HTTP GET, http://myweb/users/pyo
첫줄은 전체목록에 해당하고, 둘째줄은 pyo의 정보를 요청합니다.
GET으로 요청하고 있고 Body에는 아무 내용도 추가하지 않았습니다.
3-3 사용자 업데이트
HTTP PUT, http://myweb/users/pyo
{
"address":"daegu",
"gender":"female"
}
pyo의 리소스에 대한 성별을 Body에 포함시켜 PUT으로 요청합니다.
3-4 사용자 삭제
HTTP DELETE, http://myweb/users/pyo
HTTP DELETE, http://myweb/users/
pyo 리소스 삭제, 두번 째 줄은 user에 대한 전체 목록 삭제.
#Ref
youngwonseo.github.io/2018/08/05/REST/
'CS > Network' 카테고리의 다른 글
HTTP에 대하여 (0) | 2020.11.19 |
---|---|
Get과 Post 방식 (0) | 2020.09.10 |