REST执行操作

时间:2012-04-17 13:40:57

标签: rest

我正在设计一个REST API,我需要让客户端能够复制资源。 比如说您拥有以下资源:customer / {customerno} / address

您将为客户提供将地址复制到shippingaddress的功能。 我可以这样做:customer / {customerno} / address / copytoshipping

但是它会是RPC而不是REST。做这样的事的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

是否必须在REST API中?客户可以只获取(账单?)地址的表示并将其输出到送货地址。是的,您可能会在客户端代码中隐藏其中的详细信息(这对我来说似乎非常合理),但没有特别的理由通过特殊操作来复制REST接口。

答案 1 :(得分:1)

使用Rel =“CustomerAddress”

获取地址

POST使用Rel =“CustomerShippingAddress”示例URL customer / {customerno} / address / shipping

答案 2 :(得分:1)

另一种方法可能是:

  • 为“客户地址”公开资源(如上所述)

    GET /customer/{number}/address

  • 为“客户送货地址”公开资源 抓取:

    GET /customer/{number}/shipping-address

  • 使用实际地址更新:

    PUT /customer/{number}/shipping-address
    Content-Type: application/xml  
    (xml/json of a single address)
    
  • 使用指向另一个地址的URI指针进行更新

    PUT /customer/number/shipping-address HTTP/1.1
    Content-Type: application/atom+xml
    (xml/json of an atom:link with href pointer to main address ('/customer/123/address')
    

可能比您想要的更复杂,但将复制负担放在服务器而不是客户端上。