잠시 동안 RESTful 서비스에 대한 기사를 읽었으며 리소스에 대해 VERBS를 사용하는 것이 중요하다는 것을 알고 있습니다.RESTful 서비스의 사용자 지정 동작
그러나 내가 이해하지 못한 한 가지가 있습니다. CRUD의 일부가 아닌 특정 액션을 호출해야한다면 어떻게 될까요?
예를 들어, 나는 점프를하고 싶다고 생각해. 어떤 형식을 사용해야합니까?
다음 중 RESTful입니까?
http://host/cats/123/jump
잠시 동안 RESTful 서비스에 대한 기사를 읽었으며 리소스에 대해 VERBS를 사용하는 것이 중요하다는 것을 알고 있습니다.RESTful 서비스의 사용자 지정 동작
그러나 내가 이해하지 못한 한 가지가 있습니다. CRUD의 일부가 아닌 특정 액션을 호출해야한다면 어떻게 될까요?
예를 들어, 나는 점프를하고 싶다고 생각해. 어떤 형식을 사용해야합니까?
다음 중 RESTful입니까?
http://host/cats/123/jump
cats/123
은 자원이 다음에 대해 이런 식으로 생각 나타내는 경우 : 해당 자원이 많은 상태를 가질 수 있습니다 (소변, 산책 이 점프, 수면, 식사, ...). REST 아키텍처 스타일을 사용하여 API를 디자인 할 때, 클라이언트 응용 프로그램이 상태를 변경할 수있는 자원에 대한 허용 가능한 요청을 허용 할 수 있습니다.
cats/123
의 컨텍스트에서 자원 상태가 변경되는 일련의 POST 요청을 통해이를 수행 할 수 있습니다. REST에서 하이퍼 미디어 기능을 이용하면 아래와 같은 요청 및 응답과 같은 프로세스를 생성 할 수 있습니다. 허용 링크는 POST에 대한 응답으로 변경됩니다. 또한 클라이언트 응용 프로그램은 Href 속성에 포함 된 실제 URI가 아니라 Links 배열에 포함 된 속성을 코딩합니다.
요청 :
GET cats/123
응답 :
{
"Color" : "black",
"Age" : "2",
"Links":[
{
"Food":"kibbles",
"Method":"POST",
"Href":"http://cats/123",
"Title":"Feed the cat"
},
{
"Scare":"yell real loud",
"Method":"POST",
"Href":"http://cats/123",
"Title":"Scare the cat"
}]
}
요청 :
POST cats/123
{
"Food":"kibbles"
}
응답 :
{
"Color" : "black",
"Age" : "2",
"Tummy" : "full"
"Links":[
{
"Sleep":"lap",
"Method":"POST",
"Href":"http://cats/123",
"Title":"Pet the cat"
},
{
"Scare":"yell real loud",
"Method":"POST",
"Href":"http://cats/123",
"Title":"Scare the cat"
}]
}
+1. 감사. 하지만 우리는 POST 대신 리소스를 업데이트하기 위해 PUT을 사용해야한다고 생각했습니다. POST가 생성에 사용되어야한다고 읽었습니까? – SiN
아쉽게도 REST 아키텍처 스타일에 대한 토론 ("인수")은 HTTP 사양 및 HTTP 사양을 이해하는 데 중점을 둡니다. 간단히 말해서, [HTTP spec] (http://www.ietf.org/rfc/rfc2616.txt)에 따르면 PUT 메소드는 * 전체 리소스 표현 (클라이언트가 업데이트 한 엔티티)을 서버가 클라이언트의 최신 버전을 가지고 있다고 가정 할 때 현재 자원 표현을 대체 할 수 있습니다. 문제의 "행동"은 리소스를 업데이트 된 버전으로 대체하는 대신 상태 전환을 요청하는 것입니다. –
{Ran out of space :)} 또한 POST는 자원 표현을 한 상태에서 다른 상태로 전환시키는 허용 된 방법입니다. –