【问题标题】:What returning when coding a REST API that finds no value? [closed]编写没有价值的 REST API 时会返回什么? [关闭]
【发布时间】:2020-04-06 00:20:28
【问题描述】:

我想知道当我们使用 Spring Data 以通过 Id 查找对象时 REST Api 应该返回什么?

我看到很多人会返回 404 Not found 和其他 204 No content 。

但假设客户端总是要捕获异常或检查返回的对象是否不为空。

我认为最好总是返回一个非 Null 对象,甚至是空的,这样我们就可以尊重空对象设计模式。 希望各位大侠指教

【问题讨论】:

    标签: spring rest api spring-boot spring-data-jpa


    【解决方案1】:

    REST 不太关心;如果资源具有当前表示,则您发送该表示并在响应标头中对其进行注释。如果它没有当前的表示,那么你发送一个错误的表示,在标题中带有适当的注释。

    但是 REST 没有提供关于资源应该在哪些/何时具有当前表示的任何指导。

    如果资源有默认表示,那么是的,即使在您的数据库/文档存储/文件系统/...中没有匹配的数据,使用它也是合理的。

    【讨论】:

      【解决方案2】:

      这取决于您的偏好,您可以返回 404 或 204,或者如果您想发送任何自定义消息,您也可以这样做。但总的来说,我认为最好发送 404。API 使用者很容易获得错误代码并显示必要的消息。

      【讨论】:

        【解决方案3】:

        我会返回一个响应代码200,其中包含一个指示详细信息的正文。

        由于端点存在,发出的请求完全有效,可以处理,但没有匹配。

        如果对端点的请求无效,您将查看其他 4xx 错误。

        但是,这也取决于消费者的实现。

        【讨论】:

        • 作为消费者,我必须作为端点返回的 DTO 响应是什么?即使找不到数据,dto 也可以始终不为空吗?比如返回的对象 dto like : returnedobject =[]
        猜你喜欢
        • 2012-03-23
        • 2023-04-06
        • 2021-05-22
        • 2016-06-15
        • 1970-01-01
        • 1970-01-01
        • 2016-02-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多