Spring Boot:如何在接口else分支返回JSON格式默认值?
解决Spring Boot Controller返回默认JSON的问题
你需要在else分支中创建一个默认的IndirizzoDto实例,填充好预设的默认值,然后通过ResponseEntity.ok()返回这个实例即可。注意不能再用ResponseEntity.noContent(),因为204状态码的响应不允许携带响应体,而你需要返回JSON内容,所以要改用200 OK状态码。
修改后的代码示例:
@GetMapping("/byemail/{email}") public ResponseEntity<IndirizzoDto> getIndirizzoByEmail(@PathVariable("email") String email) { Indirizzo indirizzo = indirizzoService.filtraPerEmail(email); if (indirizzo != null) { // convert entity to DTO IndirizzoDto indirizzoResponse = modelMapper.map(indirizzo, IndirizzoDto.class); return ResponseEntity.ok().body(indirizzoResponse); } else { // 创建并填充默认DTO IndirizzoDto defaultIndirizzo = new IndirizzoDto(); defaultIndirizzo.setEmail(email); // 可将查询的email带入默认值 defaultIndirizzo.setVia("默认街道"); defaultIndirizzo.setCitta("默认城市"); defaultIndirizzo.setCap("00000"); // 其他字段按需设置默认值 return ResponseEntity.ok(defaultIndirizzo); // 返回带默认值的JSON } }
补充说明:
- 确保
IndirizzoDto类具备可序列化的条件:要么手动编写所有字段的getter/setter方法,要么使用Lombok的@Data注解自动生成。 - 如果需要明确标识“未找到原数据但返回默认值”的场景,也可以选择返回
200 OK之外的状态码(比如206 Partial Content),但200 OK是最符合“返回有效响应体”语义的选择。
内容的提问来源于stack exchange,提问作者user27593256
相关产品推荐
相关产品推荐

