我的REST Web服务应用程序有一个Spring端点,我想返回一个字符串:
"Unauthorized: token is invalid"
但我在前端的javascript对此嗤之以鼻:
JSON.parse("Unauthorized: token is invalid") //Unexpected token U
如何让我的应用返回有效的JSON字符串?这是我目前的代码:
@RequestMapping(value="/401")
public ResponseEntity<String> unauthorized() {
return new ResponseEntity<String>("Unauthorized: token is invalid", HttpStatus.UNAUTHORIZED);
}
答案 0 :(得分:13)
改为返回地图。
Map<String,String> result = new HashMap<String,String>();
result.put("message", "Unauthorized...");
return result;
您不需要返回ResponseEntity
,您可以直接退回POJO或收藏品。如果要返回POJO或集合,请将@ResponseBody
添加到处理程序方法。
此外,我说最好使用forward
而不是redirect
来处理错误。
答案 1 :(得分:8)
@Neil提供了一个更好的替代方案,可以帮助您实现目标。
然而,在回答问题时,你很接近。
以下修改后的代码应生成有效的JSON响应
@RequestMapping(value="/401")
public ResponseEntity<String> unauthorized() {
String json = "[\"Unauthorized\": \"token is invalid\"]";
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setContentType(MediaType.APPLICATION_JSON);
return new ResponseEntity<String>(json, responseHeaders, HttpStatus.UNAUTHORIZED);
}