休息控制器响应 返回空对象

问题描述 投票:0回答:2

我使用Spring Data Pageable来实现分页和排序。我的相关代码段是:

    //GET API designed as POST due to Request Body, in lines of ES APIs
    @PostMapping(value = "/v2")
    public Page<ObjectDto> getObjects(@RequestBody @Valid Map<Integer, FilterRequestDto> filterDtoMap, Pageable pageable) {
        Page<ObjectDto> objectDtos = myService.getDtos(filterDtoMap, pageable);
        log.info(String.valueOf(objectDtos.getTotalElements()));
        return objectDtos;
    }

虽然我有数据(从日志中确认),但上面的API正在响应{}。

但是,当我在这个片段中返回List时:

    @PostMapping(value = "/v2")
    public List<ObjectDto> getObjects(@RequestBody @Valid Map<Integer,FilterRequestDto> filterDtoMap, Pageable pageable) {
        Page<ObjectDto> objectDtos = myService.getDtos(filterDtoMap, pageable);
        log.info(String.valueOf(objectDtos.getTotalElements()));
        return objectDtos.getContent();
    }

对于完全相同的API,List返回类型的响应是正确的响应:

[{“sellingPrice”:23000,“id”:1,“version”:1,“createdOn”:“2019年2月25日,5:53”,“lastUpdatedOn”:“2019年2月25日,5:53”}]

存储库代码:

@Repository
public interface MyObjectRepository extends JpaRepository<MyObject, Long>, JpaSpecificationExecutor<MyObject> {}

服务代码:

public Page<ObjectDto> getTyres(Map<Integer, FilterRequestDto> filterDtoMap, Pageable pageable) {
        List<FilterDto> filterDtoList = filtersService.getAllFiltersById(filterDtoMap.keySet());
        return objectMapper.toDto(myObjectRepository.findAll(ObjectSpecs.filter(filterDtoList, filterDtoMap), pageable));
    }

据我所知,我们可以将页面作为Rest API响应返回,那么这里的问题是什么呢?任何帮助都感激不尽。

java spring-boot spring-data httpresponse spring-restcontroller
2个回答
0
投票

不要使用Page<ObjectDto>作为返回类型的休息方法。本页不是为了这个。使用返回类型为List<ObjectDto>

并在日志中打印

log.info(String.valueOf(objectDtos.getTotalElements()));

所以它的打印正确,如果你在休息方法返回objectDtos.getTotalElements()然后它也将工作

© www.soinside.com 2019 - 2024. All rights reserved.