当前位置: 首页 > 知识库问答 >
问题:

REST最佳实践:您应该在POST和PUT调用中返回实体吗?

严玉泽
2023-03-14

为了尊重REST原则的最佳实践,是否最好在POST/PUT时返回创建/更新的实体?还是用Location头返回一个空的HTTP体?

更准确地说,当一个资源由一个帖子创建时,我们应该返回:

  • 状态201位置标头(HTTP正文中创建的实体)

  • 状态 201 位置标头(空正文)

当一个资源被PUT更新时,我们是否应该返回:

  • 状态200(HTTP主体中的更新实体)

  • 状态 204(空正文)

共有1个答案

管梓
2023-03-14

研究其他人的API以了解他们是如何做到的可能会有所帮助。大多数有用的公共API都在网络上的某个地方发布。

例如,OverMind项目在此处发布他们的REST API。通常,他们的方法是返回一个JSON字典,其中包含新的或修改的实体ID及其所有属性:

Operation                     HTTP Method   URL           Query string
--------------------------    -----------   ---           ------------
Create node for a specific 
provider                      POST          /api/nodes/   provider_id=PROVIDER_ID

HTTP Payload returned
---------------------
JSON dict with id of node created (generated on the server side) and all other 
attributes of the node

Twilio的API能够返回XML或JSON。当出现问题时,Twilio在HTTP响应体中返回异常。在XML中,它们显示为

总的来说,我认为在PUT或POST中返回对象是有用的,因为它将包含对对象属性所做的任何修改(比如默认值)。

 类似资料:
  • 我想回复ResponseEntity的回复。我对在ResponseEntity中提到返回类型的最佳实践有点困惑。 这是我的控制器: 我的主要责任: 这里我的返回类型是GenericResponse、AdminAccount。在ResponseEntity中提及所有退货类型是否是一种良好的做法? 哪个是最好的方法

  • 想改进这个问题吗 更新问题,通过编辑这篇文章,可以用事实和引用来回答。 API响应应该始终是JSON对象,键和值是json数组吗?因此: 或者 API 响应本身可以只是一个数组?我找不到这方面的最佳实践是什么,如果一个被认为是一个糟糕的方法。

  • 问题内容: 今天,我在登录表单后面添加了额外的安全检查,以减缓暴力攻击。我有多个登录表单,并提供了一个易于调用的函数,该函数可以进行所有检查,然后返回结果。 问题是结果不是单个值,结果包括: 为此,我创建了一个新类。这一切都很好。 但是我经常有方便的实用程序函数,这些函数会返回多个值,并开始发现每次为结果创建一个新类都有些烦人。 有没有更好的方法来返回多个值?还是我只是懒惰?:) 问题答案: 不,

  • 问题内容: 因此,这里没有什么新鲜事,我只是想澄清一下,似乎无法在其他帖子中找到任何内容。 我正在重新创建新资源,说: 与身体: 我知道我应该返回带有新资源的Location标头的201(创建的): 我似乎无法为自己回答的问题是服务器应该返回什么内容。 我经常这样做: 我这样做有两个原因: 我已经为诸如angularjs的前端框架编写了api。在我的特定情况下,我使用的是角度资源,我通常只需要ID

  • 我担心我们返回错误给客户的方式。 我们是否在收到错误时通过抛出HttpResponseException立即返回错误: 或者累积所有错误,然后发送回客户端: 这只是一个示例代码,验证错误或服务器错误都无关紧要,我只是想知道最佳实践,每种方法的优缺点。

  • 这里有些给使用和编写 Ansible playbook 的贴士. 你能在我们的 ansible-example repository.找到展示这些最佳实践的 playbook 样例.(注意: 这些示例用的也许不是最新版的中所有特性,但它们仍旧是极佳的参考.) Topics 最佳实践 接下来的章节将向你展示一种组织 playbook 内容方式. 你对 Ansible 的使用应该符合你的需求而不是我们