在 POST/PUT 上返回一个稍微不同的对象(例如发送到服务器的对象)是否符合 REST 风格?
示例:
客户端向服务器发送(POST/PUT)订单
以创建订单。服务器发送一个响应对象,我们将其称为 OrderResponse
,其中包含创建的 Order
的属性以及一些不同的信息,例如交货时间、付款条件等。这是 RESTful 还是我应该返回一个 OrderId 并提供一个新服务,客户端可以在其中检索 OrderResponse
?
编辑:
我无法向客户提供新订单的 URL,因为订单未保存在数据库中。我的应用程序通过消息传递将订单发送到第三方系统,我无法从中读取订单,但第三方系统向我发送了一些附加信息,我将其添加到 OrderResponse
中。
最佳答案
我不会将 Order
和 OrderResponse
视为不同的资源。它们属于同一类型。只是客户端不能也不应该知道该资源的所有细节。例如,确切的 ID 由服务器分配。
- 使用相同的资源,但可能具有不同的表示形式。
- 在对
POST
请求的 HTTP 响应中返回一个Location
header ,其中包含创建的Order
的 URI。 - 使
订单
的表示和此URI比客户端POST
的表示更加完整。
关于java - 对 PUT/POST 的 RESTful 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13135234/