You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:07:15