0

我正在帮助为 Drupal CMS (http://drupal.org/) 设计一个 RESTful API。作为其中的一部分,我们希望在给定的数据对象(资​​源)上支持多种格式(mime 类型)。一切都很好。

但是,我们不确定错误处理的最佳实践是什么。具体来说,在出现 403、404 或 500 错误的情况下,我们应该以什么格式返回错误消息,以及它的影响程度如何?

我最初的想法当然是“按照要求的格式,呃”。然而,这意味着需要大量的按格式工作来确保正确的信封。例如:

应用程序/json:

{ 'error': "framstan 坏了,我们找不到那个物体。" }

应用程序/json-ld+json

{ '@context': {something here}, '@error': "framstan 坏了,我们找不到那个物体。" }

应用程序/xml

<error>
    <message>The framistan broke and we cannot find that object.</message>
</error>

application/atom+xml [与 application/xml 相同,但有 20 行 Atom 包装标记]

应用程序/svg+xml

<svg>
    <text>The framistan broke and we cannot find that object.</text>
</svg>

等等。当然,我们 API 的使用者需要知道我们如何格式化错误消息负载。对于向系统添加新格式以及与我们的 API 集成来说,这是一个相当高的障碍。

或者,我们可以只说普通格式(即不是 HTML)上的错误总是返回一个未格式化的文本/纯字符串。因此,如果系统在请求任何非 HTML 格式时死机,您总是会收到一条带有正文的文本/纯文本消息“framstan 坏了,我们找不到那个对象。”。

这更容易开发,也更容易为客户端提供支持,但这意味着请求 application/atom+xml 的客户端可以以 text/plain 形式返回响应。那是怎么回事?

有没有其他人遇到过这个问题?你是怎么解决的?是否有关于如何处理这种情况的事实上的最佳实践?某处是否有规范规定我们可以遵循的操作?基本上我想尽可能避免“做我们自己的事情”,尤其是在 REST API 领域。

4

0 回答 0