2

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

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

但那将是 RPC 而不是 REST。做这样的事情的正确方法是什么?

4

3 回答 3

2

是否必须在 REST API 中?客户端可以只获取(帐单?)地址的表示并将其放入送货地址。是的,您可能会在客户端代码中隐藏这些细节(这对我来说似乎很合理),但是没有特别的理由用特殊操作来混淆 REST 接口来进行复制。

于 2012-04-17T16:33:02.717 回答
1

使用 Rel="CustomerAddress" 获取地址

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

于 2012-04-17T14:02:04.973 回答
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')
    

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

于 2012-04-17T17:48:17.413 回答