Rest란?
- "Respresentational State Transfer"
- 즉, 자원을 표현을 통하여 상태를 전달하는 방식
- HTTP URI(Uniform Resourc Identifier)를 통해서 자원(Resource)를 명시하고, HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원에 대해 CRUD(Create, Read, Update, Delete)를 처리한다.
RESTful API란?
- REST 기반으로 서비스 API를 구현하는 것
1) 왜 RESTful API를 사용하는가?
- REST기반으로 시스템을 분산하여 확장성과 재사용성을 높여 유지 보수 및 운용을 편리하게 유지할 수 있기 때문
- HTTP 표준을 기반으로 구현되므로 HTTP를 지원하는 프로그래밍 언어로 클라이언트와 서버를 구현할 수 있기 때문
2) 어떻게 RESTful API를 설계하는가?
- RESTful API는
HTTP Method
, URI
, Data
를 결합하여 표현됩니다. 특히, Data
와 URI
에 어떤 자원을 원하는지 표현하고, HTTP Method
로 그 자원을 어떻게 하고 싶은지 표현합니다.
1. HTTP Method
- `GET` : 가져오다
- 기본적으로, GET
요청은 리소스를 변경하지 않고, READ-ONLY 하는 경우에 사용된다.
- POST
: 게시하다
- PUT
: 집어넣다
PATCH
: 지우다
- DELETE
: 고치다
2. URI
- 일반적으로 URI는 명사로만 표현된다.
- 동사 부분은 Method가 담당하고 있기 때문
GET cards/1/delete
(잘못된 표현)
DELETE cards/1
(옳은 표현)
- 리소스 간에 계층 관계는
/
로 나타낸다.
- GET cards/3/title
cards
중에서 id
가 3인 것의 title
을 불러온다.
Card
와 같은 모델은 cards
처럼 복수로 나타내면 더 이해하기 쉽다.
- 리소스 간에 연관 관계 는 다음과 같이 나타낸다.
- GET /users/:userid/devices
(has 표현)
userid
와 맞는 user
가 가지고 있는 devices
를 불러온다.
3. Data
param
ex) GET /cards/:id
에서 id
에 해당하는 부분
body.param
ex) POST /cards
에서 숨겨서 보내지는 부분
query.param
ex) GET /cards?id=3
에서 id
에 해당하는 부분
3) RESTful API 예시
GET cards/1
: id가 1인 card를 가져온다.
DELETE cards/1
: id가 1인 card를 삭제한다.
참고자료