Rest, RestAPI, Restful
Rest Api 성숙도 모델
- rest api 의 발전 단계를 모델화
- 성숙도 모델은 총 4 단계로 나누어지며 각 단계를 달성할 수록 REST API 에 가까워짐
REST - 0 단계
CREATE : POST /api/user
READ : POST /api/user
UPDATE : POST /api/user
DELETE : POST /api/user
POST /api/user
{
// body 에 담는 데이터로 요청을 구분함
"function": "getUser",
"arguments" [
"1"
]
}
HTTP/1.1 200 OK
{
"result" {
"id": "1"
"name": "honey",
}
}
- 리소스 구분없이 설계된 원시적인 형태의 http api
- crud 를 표현하기 위해 하나의 uri 만 사용함
- http 메소드는 post 만 사용하며 body 에 담는 데이터로 요청을 구분하여 전달함
REST - 1 단계
CREATE : POST /api/users/create
READ : GET /api/users/1
UPDATE : POST /api/users/update
DELETE : POST /api/users/remove/1
POST /api/users/create
{
"name": "honey"
}
HTTP/1.1 200 OK
{
"result" {
"error": "already exist member"
}
}
- 리소스 개념 도입 : url 를 통해 자원을 식별
- 모든 요청을 하나의 엔드 포인트로 보내는 것이 아니라 개별 리소스로 통신
- http method 는 get 과 post 만 사용하고 상태 코드는 반드시 200 으로 전달함
- 헤더에 Content-type 이나 Cache 관련 정보도 제공하지 않음
REST - 2 단계
CREATE : POST /api/users
READ : GET /api/users/1
UPDATE : PUT /api/users/1
DELETE : DELETE /api/users/1
POST /api/users
{
"name": "honey"
}
HTTP/1.1 201 Created
**Content-Type: application/json**
{
"result" {
"id": "1",
"name": "honey"
}
}
- 4가지 http method 를 사용하여 crud 를 표현하고 여러 상태 코드를 활용함
- 헤더에 Content-type 을 제공하고 캐시가 적용됨
- 현재 대부분의 rest api 는 이 단계에 해당함
REST - 3 단계
GET /api/users/1
HTTP/1.1 200 OK
Content-Type: application/json
{
"result" {
"id": "1",
"name": "honey",
"_links": {
"self" : {
"href" : "https:/api/users/1"
},
"update" : {
"href" : "https:/api/users/1"
},
"list" : {
"href" : "https:/api/users/"
},
}
}
- 2단계와 거의 동일하지만, 응답에는 리소스의 URI를 포함한 링크를 넣어 새로운 기능에 접근할 수 있도록 하는 것이 3단계의 중요 포인트이다.
- 응답에 들어가게 되는 링크 요소 : 응답을 받은 다음에 할 수 있는 다양한 행동을 위해 많은 하이퍼미디어 컨트롤을 포함한다.