java - RestController 中的 Spring RequestMapping 返回 406

标签 java spring spring-restcontroller http-status-code-406

@RestController内部,我有一个@RequestMapping,它可以工作,除非我在尝试返回POJO类ResponseVO时在客户端中收到406

@RequestMapping(value = "path", method = RequestMethod.POST
            , produces = MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody ResponseEntity<GenericResponse> path(

...
ResponseVO responseVO = new responseVO();
return new ResponseEntity<>(responseVO, HttpStatus.OK);

我正在发送带有 JSON 正文的 POST,我的请求 header :

Connection: keep-alive
Content-Type: application/json
Accept: */*
Content-Length: 58
Host: localhost:8080
User-Agent: Apache-HttpClient/4.5.6 (Java/1.8.0_151)

响应 header :

HTTP/1.1 406 Not Acceptable
Server: Apache-Coyote/1.1
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: POST, GET, PUT, OPTIONS, DELETE
Access-Control-Max-Age: 3600
Access-Control-Allow-Headers: X-Requested-With, Content-Type, Authorization, Origin, Accept, Access-Control-Request-Method, Access-Control-Request-Headers
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 1067

最佳答案

当您使用@RestController时,它自动意味着您正在Spring Boot中注释@Controller@ResponseBody。因此,您不需要明确地在方法上添加 @ResponseBody 注释。另外 @ResponseBody 注解添加在方法上方,而不是与方法声明一起添加。因此,即使您正确添加此注释,您的代码也应该可以正常工作。请看下面。

@RequestMapping(value = "path", method = RequestMethod.POST, produces =MediaType.APPLICATION_JSON_VALUE)
@ResponseBody 
public ResponseEntity<GenericResponse> path(

...
    ResponseVO responseVO = new responseVO();
    return new ResponseEntity<>(responseVO, HttpStatus.OK);

关于java - RestController 中的 Spring RequestMapping 返回 406,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52828587/

相关文章:

java - 我可以将哪个免费版本的 Java 用于生产环境和/或商业用途?

java - 如何安全地外部化 Spring 应用程序上下文使用的用户名和密码

java - 如何在 ZK 中添加用于重定向的 Java 方法计时器

java - Spring MVC,将json对象传递给 Controller ​​并返回带有模型属性集的 View

java - Spring 启动+休息+ Spring 安全: how to generate a custom JSON response for HTTP 403

java - 在 Java 中实例化泛型类

java - 带有变音符号的响应文本的内容长度错误

java - Hibernate 4 Multi-Tenancy 问题 - 未找到实体持久存在

java - 未找到具有 URI 的 HTTP 请求的映射

java - 在 spring boot 中没有调用 Rest Controller 方法