我有以下控制器类:
@RestController
@RequestMapping(value = "/query")
public class QueryController {
@Autowired
private QueryService queryService;
// this post API works perfectly fine
@PostMapping(value = "/submit")
public void submitQuery(@Valid @RequestBody Query query) {
queryService.submit(query);
}
// this API is throwing the error
@GetMapping(value = "/find/email/{email:.+}")
public List<Query> fetchByEmail(@PathVariable("email") String email) {
return queryService.fetchByEmail(email);
}
}
我正在发送以下cURL请求:
卷曲-X GET http://localhost:8562/query/find/email/abc@gmail.com -H'内容类型:application / json'
在调试模式下,我可以看到请求已通过我在请求中发送的预期emailId到达控制器。 DAO层搜索也发生了,它返回了1条记录,但是API引发了以下错误:
{
"timestamp": 1569655451392,
"status": 406,
"error": "Not Acceptable",
"message": "Could not find acceptable representation",
"path": "/query/find/email/abc@gmail.com"
}
有人可以帮忙吗?
注意:我正在使用springBootVersion ='2.0.5.RELEASE'
编辑:GET API是引发错误的API。没有点号(。)的任何请求都可以正常工作。以下请求不会引发任何错误:
卷曲-X GET http://localhost:8562/query/find/email/abc@gmail -H'内容类型:application / json'
编辑2:附加以下调试屏幕截图:
从这一点来看,如果我运行代码,则会出现以下错误:
{“时间戳”:1569657676774,“状态”:406,“错误”:“不可接受”,“消息”:“找不到可接受的表示形式”,“路径”:“ / query / find / email / rishi2893 @ gmail.com“}
答案 0 :(得分:0)
HTTP 406不可接受表示服务器无法以客户端可以理解的格式产生响应。
您必须发送Accept
标头,以便将客户端可以理解的可接受格式通知服务器,并发送给ensure that your server can produce such formats
。
curl -H "Accept: application/json" ...
除上述内容外,当在请求中发送Content-Type标头时,它指定从 client 发送的请求的媒体类型。在POST / PUT请求中应使用Content-Type标头。在GET请求中没有意义,因为您不应在此类请求中包含正文。