REST - GET 返回与 POST/PUT 不同的结果

标签 rest post get put

在我们的项目中,可以通过 POST 或 PUT 请求发送书籍结构(XML、JSON 等)来添加书籍。例如,在 XML 中,书籍结构如下所示(简化):

<book>
    <title>My Book</title>
    <author>John Q.</author>
</book>

当这本书被插入我们的后端数据库时,一些自动生成的属性会自动添加,例如创建日期、提交这本书的用户 ID、标识符……

当通过 GET 检索图书时,这些附加属性包含在图书定义中:

<book>
    <title>My Book</title>
    <author>John Q.</author>
    <info>
        <creation_date>2011...</creation_data>
        <user_id>48</user_id>
        <identifier>my_book_john_q</identifier>
    </info>
</book>

这基本上意味着一本新书/编辑过的书(= 从客户端到服务器)的 XML 方案与检索到的书(= 从服务器到客户端)不同。这让事情变得困惑。

一种可能性是使这些附加属性在不同的 URI 中可用,例如:

http://server/books/:id/             -> returns the short version
http://server/books/:id/information/ -> returns the generated properties

这种方法的缺点是需要两个单独的请求才能获得所有数据。

您将如何解决这种不一致?

最佳答案

这是完全正常的。让服务器用一些额外的信息来扩充表示是没有问题的。一个很好的例子是当服务器向表示添加链接时。在执行 PUT 时,客户端不需要将这些链接的“副本”发送到服务器。您 GET 和 PUT 的资源表示在概念上应该是相同的,不一定是逐字节相同。

关于REST - GET 返回与 POST/PUT 不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6718774/

相关文章:

api - 如何通过来自 TeamCity 构建的 API 列出更改?

javascript - 从完成 API 调用的 Promise 链中返回一个字符串

rest - 使用REST API在消息 header 中传递参数

REST 使用外部 ID 创建资源

java - 什么是 "trustAnchors"

sql - 获取 SQL 字符串中每个单词的第一个字母

json - 如何在Python中处理响应对象?

使用 JAXB 实现 Spring Restful Web 服务的基于 Java 的配置

django - 通过 Postman 发送 CSRF token

javascript - 在 jQuery 中保持 GET 连接打开