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

Spring Boot的GetMapping返回类型为List时无数据如何返回提示字符串

问题解决步骤

现有代码问题梳理

  • Controller方法修饰符为private,Spring无法完成接口映射,是导致报错的核心原因之一
  • 空数据分支直接return,相当于返回null,Spring默认会将该响应判定为404
  • 方法返回值固定为List<Library>,无法兼容空数据场景下的字符串提示返回
  • 重复调用两次libraryService.getBookByGenre(genre),会产生多余的数据库查询请求,性能低下

解决方案

推荐使用ResponseEntity包装响应结果,支持灵活返回不同类型的响应内容、自定义HTTP状态码:

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import java.util.List;
import java.util.HashMap;
import java.util.Map;

@GetMapping("/library/book/{genre}")
public ResponseEntity<?> getBookByGenre(@PathVariable("genre") String genre) {
    // 先查询一次结果存储到变量,避免重复查询
    List<Library> bookList = libraryService.getBookByGenre(genre);
    if (bookList.isEmpty()) {
        // 如需返回纯文本提示,HTTP状态码可按需求选择OK或NOT_FOUND
        return new ResponseEntity<>("No data found for this genre", HttpStatus.OK);
        // 如需返回结构化错误信息,可替换为下面的写法
        /*
        Map<String, Object> errorRes = new HashMap<>();
        errorRes.put("errorCode", 404);
        errorRes.put("errorMessage", "No data found for this genre");
        return new ResponseEntity<>(errorRes, HttpStatus.NOT_FOUND);
        */
    }
    return new ResponseEntity<>(bookList, HttpStatus.OK);
}

效果验证

修改后调用接口:

  • 存在对应genre的书籍时,正常返回书籍列表的JSON数据
  • 无对应数据时,Postman会直接返回你需要的提示字符串,不会再抛出404异常

内容的提问来源于stack exchange,提问作者Atul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:48:05