【问题标题】:What is a reasonable way to provide URI resource as a suggestion in specific HTTP error responses of an existing Web API在现有 Web API 的特定 HTTP 错误响应中提供 URI 资源作为建议的合理方法是什么
【发布时间】:2025-12-30 15:15:16
【问题描述】:

我知道一些流行的超媒体格式,例如 HAL、UBER 和 Collection+JSON,我确实看到了这些格式的价值,但是如果我想在出现错误的情况下简单地添加建议的 URI对现有基于 HTTP 的 API 的响应 这样做的合理方式是什么?我宁愿不只是自己编造一些没有标准的东西,但另一方面,我也不打算在那个时候推翻 API。此外,在浏览一些流行的超媒体格式的细节时,我没有看到任何具体建议如何呈现与错误案例相关的相关链接的示例。

我想支持的一个示例用例类似于对格式为 /documents/vehical-listing 的 URL 的 POST 的响应,其中列表缺少所有者属性,我想指出消费者到 /vehical-owners 等 URL,以便他们在尝试发布需要引用注册车主的车辆列表之前知道在哪里发布车主信息。

【问题讨论】:

  • 根据良好的 API 设计,您可以引入任何您需要的错误格式,只要它是描述性的并且在您提供的 API 的任何地方都一致地使用。

标签: rest http-error hypermedia


【解决方案1】:

我相信您正在寻找的内容称为http-problem。它是一种用于返回正在标准化过程中的错误信息的格式。 Akamai 目前正在使用它,我知道许多其他开发人员正在添加对它的支持。

这是规范中的示例,

   HTTP/1.1 403 Forbidden
   Content-Type: application/problem+json
   Content-Language: en

   {
    "type": "https://example.com/probs/out-of-credit",
    "title": "You do not have enough credit.",
    "detail": "Your current balance is 30, but that costs 50.",
    "instance": "/account/12345/msgs/abc",
    "balance": 30,
    "accounts": ["/account/12345",
                 "/account/67890"]
   }

“余额”和“帐户”属性是特定于示例 API 的任意扩展。您可以添加自己的扩展。这将允许您添加包含指向 vehicle-owners 资源的 URL 的扩展属性。

【讨论】:

    最近更新 更多