请求大数据量接口时手动分页

前段时间做项目遇到这么种情况,需要调用一个批量查询接口,GET请求的 ,比如根据用户id批量查询用户信息的,接口提供方提供的就是GET请求的,然而我们一次要查询几万个用户,这样请求的结果就是接口直接挂掉,因为GET请求没法传递那么多数据,最后的解决方案是人为地进行分页

private List<UserDto> queryUserInfo(List<Integer> userIds) {
        Integer length = userIds.size();
        Integer page = 1;
        Integer size = CommonConstants.QUERY_USER_LIMIT_MAX;//这里做成配置

        if (length > size) {
            page = length / size + (length % size > 0 ? 1 : 0);
        }
        List<UserDto> userInfos = new ArrayList<>();

        for (int i = 1; i <= page; i++) {
            List<Integer> newList = userIds.subList((i - 1) * size, page == i ? length : size * i);
            try {
                //批量获取用户信息
                List<UserDto> result = userAgentService.getUserInfoByIds(newList);
                userInfos.addAll(result);
            } catch (Exception er) {
                logger.error("queryUserInfo调用用户接口获取信息失败 :[{}]", JsonUtil.object2JSON(newList), er.getMessage());
            }
        }
        return userInfos;
    }

这样算是解决问题了,大家有更好的方法可以分享出来。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值