gpt4 book ai didi

java - 当返回 404 的 HttpStatus 代码时,如何区分托管资源(在 url 上)的服务器是否已关闭或资源是否不存在

转载 作者:行者123 更新时间:2023-12-02 02:52:11 25 4
gpt4 key购买 nike

使用 Spring 的 RestTemplate.exchange(url, HTTP.GET,String.class) 签名通过 URL 和 GET Http 方法访问资源,我们如何区分托管资源(由 url 表示)的服务器是否已关闭或如果服务器找不到资源,则返回 404 的 HttpStatus 代码。

我想基于此差异通过重试机制,如果资源不存在,我不会重试。但我会在可配置的退避时间段后重试,希望服务器在服务器关闭时能够启动。

我在 spring 源代码中引用了 HTTPStatus 类,并找到了对 url 的引用 - https://www.rfc-editor.org/rfc/rfc7231#section-6.5.5

6.5.4。 404 未找到404(未找到)状态码表示源服务器已找到找不到目标资源的当前表示或不是愿意透露这一点的存在。 404 状态码不表明缺乏代表性是暂时的还是永恒的;如果满足以下条件,则 410(已消失)状态代码优于 404:源服务器大概通过某种可配置的方式知道这种情况可能是永久性的。默认情况下,404 响应是可缓存的;即,除非另有说明由方法定义或显式缓存控制指示(参见[RFC7234] 第 4.2.2 节)。

我已通读:( Is 404 the right return code for a resource that currently doesn't exist? ) 和 ( What to return when a route/url is found but not the resource behind it? )。但我找不到一篇文章来帮助我区分这两种情况。

处理 HttpClientErrorException 并查看 ResponseBody 字段可能是一个可能的解决方案,但我觉得这可能不是正确的方法。

最佳答案

HTTP 404 状态是一个有效的响应,只有在运行的服务器找不到所请求的资源时才能返回。但是,如果服务器关闭,您的连接将被拒绝。

关于java - 当返回 404 的 HttpStatus 代码时,如何区分托管资源(在 url 上)的服务器是否已关闭或资源是否不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43643818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com