java - 为什么我无法发送正确的服务器状态作为响应,而是在到达端点时收到 "no response"?

标签 java spring spring-mvc

我正在测试一个应该返回 JSON 的端点。

效果很好。但是当出现异常(例如禁止)时,它应该返回正确的错误代码和消息。

现在我这样做:

@ResponseBody
@GetMapping(produces = APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity getInfo() {
    try{
        //..do something
    }catch(Exception e){

        return new ResponseEntity<>("Error calculating the required information", null, HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

相反,当我 curl url 或大摇大摆时,我得到这个:

Request URL
http://localhost:8081/info
Request Headers
{
  "Accept": "application/json;charset=UTF-8"
}
Response Body
no content
Response Code
0
Response Headers
{
  "error": "no response from server"
}

是的,我正在到达端点(我调试了它)。

知道为什么会返回此响应吗? 谢谢。

最佳答案

您需要更改方法标志

public ResponseEntity<Void> getInfo() {

并更改返回类型

return new ResponseEntity<Void>(HttpStatus.INTERNAL_SERVER_ERROR);

如果您想返回特定消息,您需要创建自定义异常类。

您可以在 github 上找到以下项目链接的示例:https://github.com/in28minutes/spring-microservices/tree/master/02.restful-web-services/src/main/java/com/in28minutes/rest/webservices/restfulwebservices

关于java - 为什么我无法发送正确的服务器状态作为响应,而是在到达端点时收到 "no response"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48943530/

相关文章:

java - Spring Boot中如何获取系统属性值

java - 未找到依赖项 'org.springframework.boot:spring-boot-starter-data-jpa:2.5.3'

java - Spring WebSocket @SendToSession : send message to specific session

java - Spring Hibernate validator 不工作但 javax 是

java - Android 当应用程序未在后台运行时发送短信

java - 带 --java 标志和不带 --java 标志的 jruby AOT 类之间的区别

java - 如何对 Spring ResourceHandlerRegistry 服务的静态资源进行单元测试

spring - 如何将 csv MimeType 添加到 spring 内容协商?

java - Spring : 'org.springframework.beans.factory.UnsatisfiedDependencyException'。使用名称创建 bean 时出错

spring - 重定向后 HttpServletRequest 对象更改和 Session 丢失