如何在一个返回String的Spring MVC @ResponseBody方法中用HTTP 400错误进行响应?

问题:

我正在使用Spring MVC来创建一个简单的JSON API,采用基于@ResponseBody的方法,如下所示。 (我已经有一个直接生成JSON的服务层)

@RequestMapping(value = "/matches/{matchId}", produces = "application/json")
@ResponseBody
public String match(@PathVariable String matchId) {
    String json = matchService.getMatchJson(matchId);
    if (json == null) {
        // TODO: how to respond with e.g. 400 "bad request"?
    }
    return json;
}

问题是,在给定的情况下,什么是最简单,最干净的方式来响应HTTP 400错误
我确实遇到过如下方法:

return new ResponseEntity(HttpStatus.BAD_REQUEST);

…但是我不能在这里使用它,因为我的方法的返回类型是String,而不是ResponseEntity。

回答:

将您的退货类型更改为ResponseEntity<>,那么可以在400以下使用

return new ResponseEntity<>(HttpStatus.BAD_REQUEST);

并正确请求

return new ResponseEntity<>(json,HttpStatus.OK);

 更新1
在spring 4.1之后,ResponseEntity中有帮助方法可以用作

return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);

return ResponseEntity.ok(json);

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to respond with HTTP 400 error in a Spring MVC @ResponseBody method returning String?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

19 − 16 =