一尘不染

Spring MVC @ResponseBody方法返回字符串时,如何响应HTTP 400错误?

java

我将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。


阅读 730

收藏
2020-03-13

共1个答案

一尘不染

将返回类型更改为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);
2020-03-13