rest - "resource will never be available in this case"的状态码

标签 rest http response

我有一个处理发票的 REST API。现在每张发票在融资后都有一个专门的“费用 list ”。尽管并非所有项目都需要融资。我有一个端点,它为每张发票提供有关此费用列表的信息。因此,如果发票已融资,它返回 200,如果发票尚未融资(因此资源尚不可用但将会)我返回 202 但如果发票不打算融资(资源不可用且永远不会将是,在这种情况下)?

我想到了使用:

2xx - 找不到任何符合情况的代码

3xx - 不同意“客户必须采取额外行动才能完成请求”

4xx - 不同意“错误似乎是由客户引起的情况”

5xx - 不同意“服务器未能完成请求”

有什么想法吗?谢谢!

最佳答案

I have an endpoint which provides information about this fee list for each invoice. So if an invoice has been financed, it returns 200, if invoice has not yet been financed (so the resource is not yet available but will be) I return 202 but what if invoice is not meant to be financed (resource is unavailable and never will be, in this case)?

在 REST 中需要理解的一件重要事情是,元数据(状态代码、 header )描述的是资源(文档),而不是域实体。

有时,这种想法表达为“您的资源模型不是您的领域模型”。

您的域特定客户端应该查看响应的有效负载;元数据描述了超媒体资源本身与领域无关的关注点,因此通用组件(浏览器、缓存、代理、蜘蛛)可以做出贡献。

表达相同想法的另一种方式:我们真正在做的是来回发送消息。域特定客户端的消息属于有效负载;这样您就可以在这里与客户沟通发票的情况。元数据用于描述诸如“此特定消息应缓存多长时间?”之类的内容。

如果我正在设计您的 API,大多数响应将使用 200 OK 作为状态代码;当目标 URI 中可能存在拼写错误时,偶尔会出现 404 Not Found

(我可能不会像你描述的那样使用 202 Accepted,因为语义意味着不同的东西——202 更接近于“我理解你的请求,但它需要我有时间准备好文件")

关于rest - "resource will never be available in this case"的状态码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55373435/

相关文章:

java - 带有 json/xml 响应的嵌入式 jetty

c# - 将大型 xml 上传到 WCF REST 服务 -> 400 错误请求

安卓:未知主机异常

Swift 4 - 我怎样才能在类型别名的完成处理程序帮助下获得结果(字典和数据)

java - 如何解密 HttpsURLConnection

javascript - 如何在node/loopback中同步调用model.find方法?

xml - LinkedIn 图片帖子未在预览中显示

带有 nginx 的服务器上的 Git

c# - 当 HTTP-POST 有 body 时,url 参数为 null

c# - C# 中的 403 响应主体的方法似乎不可用