小编典典

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

all

我将 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);

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


阅读 85

收藏
2022-03-18

共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);
2022-03-18