我正在设计一个REST API,我需要让客户端能够复制资源。 比如说您拥有以下资源:customer / {customerno} / address
您将为客户提供将地址复制到shippingaddress的功能。 我可以这样做:customer / {customerno} / address / copytoshipping
但是它会是RPC而不是REST。做这样的事的正确方法是什么?
答案 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')
可能比您想要的更复杂,但将复制负担放在服务器而不是客户端上。