How to respond with an HTTP 400 error in a Spring MVC @ResponseBody method returning String
http-status-code-400, java, spring, spring-mvc
Solution
Change your return type to `ResponseEntity<>`, and then you can use the below for 400:
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
And for a correct request:
return new ResponseEntity<>(json,HttpStatus.OK);
After Spring 4.1 there are helper methods in ResponseEntity which could be used as:
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
and
return ResponseEntity.ok(json);
Problem
I'm using Spring MVC for a simple JSON API, with a `@ResponseBody` based approach like the following. (I already have a service layer producing JSON directly.) ``` @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; } ``` In the given scenario, what is the simplest and cleanest way to give a response with an HTTP 400 error? I did come across approaches like: ``` return new ResponseEntity(HttpStatus.BAD_REQUEST); ``` ...but I can't use it here since my method's return type is String, not ResponseEntity.