如何获取分页接口响应中的totalPages?附服务端Controller代码
嘿,这事儿简单得很!你已经通过Spring Data的Page对象拿到了带分页信息的JSON响应,要获取里面的totalPages分两种场景来操作:
1. 前端调用接口时获取totalPages
因为Controller返回的JSON结构里直接包含totalPages字段,你可以直接从响应数据中提取这个值,下面给几个常见前端技术的示例:
- 原生JavaScript Fetch API:
fetch('/persons') .then(res => res.json()) .then(data => { const totalPages = data.totalPages; console.log('总页数:', totalPages); // 这里可以基于totalPages做分页逻辑,比如渲染页码导航 });
- Axios请求示例:
axios.get('/persons') .then(res => { const totalPages = res.data.totalPages; console.log('总页数:', totalPages); });
2. 后端代码中获取totalPages
如果是在后端(比如Controller或者Service层)需要用到totalPages值,直接调用Page对象的getTotalPages()方法即可。比如你可以修改Controller,返回自定义响应体或者直接使用这个值:
@RestController class PersonController { final PersonService personService; @Autowired PersonController(PersonService personService) { this.personService = personService; } @RequestMapping(value="/persons",method=RequestMethod.GET) public ResponseEntity<Map<String, Object>> list(Pageable pageable){ Page<Person> persons = personService.listAllByPage(pageable); // 直接获取总页数 int totalPages = persons.getTotalPages(); // 如果你需要返回自定义结构的响应(可选) Map<String, Object> response = new HashMap<>(); response.put("content", persons.getContent()); response.put("totalPages", totalPages); response.put("totalElements", persons.getTotalElements()); return ResponseEntity.ok(response); } }
另外补充一句:Spring Boot默认会自动将Page对象序列化为包含totalPages、totalElements、content等字段的JSON,只要你的项目引入了Web依赖(默认包含Jackson序列化组件),就不用额外配置啦。
内容的提问来源于stack exchange,提问作者Steve2Fish
相关产品推荐
相关产品推荐

