I have a RestController and when I call the method:
@RequestMapping(value = "/sigla/{sigla}") @ResponseBody public PaisDTO obterPorSigla(@PathVariable String sigla) { return service.obterPorSigla(sigla); } If a record is found, I get a good JSON response:
{"nome":"Brasil","sigla":"BR","quantidadeEstados":27} but when nothing is found on database the RestController returns null and I get a empty response, completely blank body.
How can I display a empty JSON instead of a blank response? Like bellow:
{} Complete Controller:
@RestController @RequestMapping("/pais") public class PaisController { @Autowired private PaisService service; @RequestMapping public ResponseEntity<List<PaisDTO>> obterTodos() { return CreateResponseEntity.getResponseEntity(service.obterTodos()); } @RequestMapping(value = "/sigla/{sigla}", method = RequestMethod.GET, consumes="application/json", produces="application/json") public ResponseEntity<PaisDTO> obterPorSigla(@PathVariable String sigla) { HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "application/json"); PaisDTO paisDTO = service.obterPorSigla(sigla); if(paisDTO != null) return new ResponseEntity<PaisDTO>(paisDTO, headers, HttpStatus.OK); else return new ResponseEntity<PaisDTO>(headers, HttpStatus.OK); }
{}does not make any sense. Either the object in question has attributes (which can be blank/null) or it does not have attributes. If it has no attributes (and hence no values) then a blank/empty body would be the correct response. If the attributes exist but they are blank/null then initialize them as such