在@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/