Spring Boot 3中HttpStatusCode如何替代HttpStatus获取原因短语?
Spring Boot 3中替代HttpStatus.getReasonPhrase()的方案
不需要手动构建状态码与消息的映射,你可以通过以下方式获取原有的reason phrase:
直接强转HttpStatusCode为HttpStatus(针对标准状态码)
Spring Boot 3中HttpStatus枚举实现了HttpStatusCode接口,绝大多数Web客户端返回的标准HTTP状态码(如404、500等)本质上就是HttpStatus的实例。直接强转后就能调用getReasonPhrase():HttpStatusCode statusCode = ...; // 从WebClient响应中获取的状态码 if (statusCode instanceof HttpStatus httpStatus) { String reasonPhrase = httpStatus.getReasonPhrase(); }通过状态码值解析为HttpStatus
如果遇到无法直接强转的情况(比如非标准状态码,但属于HTTP标准范围内的),可以用HttpStatus.resolve()方法根据状态码数值解析出对应的枚举实例,再获取reason phrase:HttpStatusCode statusCode = ...; HttpStatus resolvedStatus = HttpStatus.resolve(statusCode.value()); if (resolvedStatus != null) { String reasonPhrase = resolvedStatus.getReasonPhrase(); } else { // 处理非标准状态码的情况,这类状态码本身没有默认的reason phrase }
需要注意的是,Spring Boot 3只是弃用了HttpStatus的部分过时构造方法和静态方法,枚举本身仍处于可用状态,所以上述方案不需要你维护额外的状态码映射表,完全复用框架内置的定义。
内容的提问来源于stack exchange,提问作者Urki90
相关产品推荐
相关产品推荐

