我正在设计一个 REST API,我需要让客户端能够复制资源。例如,假设您有以下资源:customer/{customerno}/address
您将为客户提供将地址复制到 shippingaddress 的功能。我可以这样做:customer/{customerno}/address/copytoshipping
但那将是 RPC 而不是 REST。做这样的事情的正确方法是什么?
我正在设计一个 REST API,我需要让客户端能够复制资源。例如,假设您有以下资源:customer/{customerno}/address
您将为客户提供将地址复制到 shippingaddress 的功能。我可以这样做:customer/{customerno}/address/copytoshipping
但那将是 RPC 而不是 REST。做这样的事情的正确方法是什么?
是否必须在 REST API 中?客户端可以只获取(帐单?)地址的表示并将其放入送货地址。是的,您可能会在客户端代码中隐藏这些细节(这对我来说似乎很合理),但是没有特别的理由用特殊操作来混淆 REST 接口来进行复制。
使用 Rel="CustomerAddress" 获取地址
POST 使用 Rel="CustomerShippingAddress" 示例 URL customer/{customerno}/address/shipping
一种不同的方法可能是:
公开“客户地址”的资源(如上所述)
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')
也许比您想要的更复杂,但会将复制负担放在服务器而不是客户端上。