我有一个处理发票的 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/