gpt4 book ai didi

rest - 轻松 POST 响应的“最佳”实践

转载 作者:行者123 更新时间:2023-12-03 04:11:14 27 4
gpt4 key购买 nike

所以这里没有什么新内容,我只是想得到一些澄清,但似乎在其他帖子中找不到任何澄清。

我正在安静地创建一个新资源,例如:

/books (POST)

有一个 body :

{
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}

我知道我应该返回一个 201(已创建),其中包含新资源的 Location header :

Location: /books/12345

我似乎无法自己回答的问题是服务器应该在正文中返回什么。

我经常做这样的回应:

{
id: 12345,
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}

我这样做有几个原因:

  1. 我为像 angularjs 这样的前端框架编写了 api。在我的我正在使用 Angular 资源的特殊情况,我经常需要用于定位资源的 ID。如果我没有返回 id我需要从位置中解析它的响应主体 header 。
  2. 在所有书籍的 GET 中,我通常返回整个对象,而不仅仅是身份证号。从这个意义上说,我的客户端代码不必区分从哪里获取 id(位置 header 或正文)。

现在我知道我确实处于灰色地带,但大多数人都说返回整个资源是“不好的”做法。但是,如果服务器更改/向资源添加信息怎么办?它肯定会添加 id,但也可能会添加其他内容,例如时间戳。如果我不返回整个资源,那么执行 POST,返回 id,然后让客户端执行 GET 来获取新资源真的更好吗?

最佳答案

返回新对象符合“统一接口(interface) - 通过表示操作资源”的 REST 原则。完整的对象是所创建的对象的新状态的表示。

这里有一个非常优秀的 API 设计引用:Best Practices for Designing a Pragmatic RESTful API

它包含您问题的答案:Updates & creation should return a resource representation

它说:

To prevent an API consumer from having to hit the API again for an updated representation, have the API return the updated (or created) representation as part of the response.

对我来说似乎非常务实,它符合我上面提到的 REST 原则。

关于rest - 轻松 POST 响应的“最佳”实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19199872/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com