我阅读有关RESTful服务的文章已有一段时间了,并且我了解对资源使用VERBS的重要性。
但是有一件事我不明白。如果我们需要调用不属于CRUD的某个 Action ,会发生什么情况?
例如,考虑我要跳猫。我们应该使用哪种格式?
以下是RESTful吗?
http://host/cats/123/jump
最佳答案
如果cats/123
表示资源,则可以这样考虑:该资源可以具有许多状态(饮食,散步,睡觉,跳跃,小便...)。在使用REST架构样式设计API时,您希望允许客户端应用程序对资源发出允许的请求,以更改其状态。
在cats/123
的上下文中,您可以通过一系列POST请求来执行此操作,这将导致资源状态发生变化。利用REST中的超媒体功能,您可以创建一个过程,如下所示的请求和响应。请注意,允许的链接随着对POST的响应而更改。同样,客户端应用程序将编码到Links数组中包含的属性,而不是Href属性中包含的实际URI。
请求:
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"
}]
}
关于web-services - RESTful服务中的自定义操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10279365/