繁体   English   中英

REST API - 是否允许对 POST 和 PUT/PATCH 使用不同的表示?

[英]REST API - Is it allowed to use different representations for POST and PUT/PATCH?

假设我有一个 function 用于处理 POST 请求,它对 POST 请求采取以下表示:

 ' { "name": "name", "nestedObject": { "prop1": "v1", "prop2": "v2" } } '
它使用给定的名称创建新的 object,并使用道具为它创建嵌套的 object:prop1 和 prop2。

For PUT/PATCH requests however, it would be more convenient for me to use URL of (already existing) object to make it nested object for top-level object, instead passing its data, something like this:

 ' { "name": "updatedName", "nestedObject": "http://alreadyExistingObjectUrl" } '
另一方面,GET 将返回嵌套的 object 数据,而不是其 URL:

 ' { "name": "name", "nestedObject": { "prop1": "v1", "prop2": "v2" } } '

为不同的方法使用不同的资源表示是一种好习惯吗? POST takes nested object data and creates it, PUT/PATCH only takes already existing object url and makes that object nested for parent object. GET 返回嵌套的 object 数据,而不是 URL。

如果您需要不同的格式,最好为每种格式定义特定的 mimetype。

通常,允许用户执行以下操作是一个非常好的设计属性:

foo = resource.get();
foo.name = 'new name';
resource.put(foo);

基本上,如果我可以假设GET返回的格式可以在PUT请求中重复使用,这也意味着服务器可以添加新的必需属性并且这仍然有效。

无论如何,这是一个最佳实践,但不是硬性建议。 如果PUTGET表示不同,我会期待不同的 mimetype。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM