我正在测试一个应该返回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);
}
}
相反,当我卷曲网址或招摇时,我得到了这个:
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"
}
是的,我正在点击端点(我调试了它)。
知道为什么这个回复会回来吗? 感谢。
答案 0 :(得分:1)
您需要更改方法标志
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
答案 1 :(得分:0)
您可以像这样更改代码
@ResponseBody
@GetMapping(produces = APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<String> getInfo() {
try {
//..do something
} catch(Exception e) {
return new ResponseEntity<>("Error calculating the required information", null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
ResponseEntity代码的定义是这样的。
public ResponseEntity(T body, MultiValueMap<String, String> headers, HttpStatus status)
您必须匹配通用类型。
有趣的是我制作了相同的代码,并且效果很好。 (响应正文返回500错误)