我阅读有关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/

10-12 02:48