Spring rest endpoint不返回body

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring rest endpoint不返回body相关的知识,希望对你有一定的参考价值。

我对我的Spring应用程序中的一个休息端点的行为感到非常困惑

我有一个简单的控制器:

@RestController
public class MyController {

    @GetMapping("/test")
    public String test(Principal principal) {
        System.out.println("HELOOOO");
        return "hello";
    }
}

我正在向此端点发送请求。请求被接受并返回200 OK但身体缺失。我看到了printline,我在浏览器控制台中看到了请求被成功处理但没有正文。

我的应用程序中有其他端点(有些甚至在同一个控制器类中),这些端点工作正常,所以我很困惑这个特定的原因可能是什么原因。

编辑:这是我在Web控制台中看到的:

HTTP/1.1 200
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Access-Control-Allow-Origin: *
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Mon, 22 Apr 2019 08:37:46 GMT

Failed to load response data

@ResponseBody注释什么都不做。

EDIT2:谢谢大家的建议 - 特别是关于用cUrl尝试端点的建议。异常不是在Spring中,而是在我的客户端处理响应,我正在错误地处理它。

答案

您可以按如下方式返回ResponseEntity:

@GetMapping("/test")
public ResponseEntity test(Principal principal) {
        System.out.println("HELOOOO");
        return new ResponseEntity<>("hello", HttpStatus.OK);
    }

这对我来说很好。

另一答案

响应状态是200,但响应最终带有错误消息"Failed to load response data"

这可能只是由于未将您返回的数据序列化为有效的JSON。

我不是春天的专家,但也许你回来了""hello""应该没事。

enter image description here

以上是关于Spring rest endpoint不返回body的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 Spring Boot 的情况下注入 Feign Client 并调用 REST Endpoint

Spring Social Authentication Filter for Stateless REST Endpoints 使用 Facebook Token 进行身份验证

404-not-found-while-running-spring-boot-rest-api

使用docker-compose时无法访问docker容器内的spring-boot rest-endpoint

Spring Boot Endpoints 中的异常处理

杰克逊:当调用不同的 Rest EndPoint 时,同一实体上的多个序列化器