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

API调用未返回数组内全部对象问题求助

解决调用Reqres API仅返回单个用户对象的问题

看起来你遇到的问题是调用分页用户接口时,只拿到了第一个用户对象,而不是该页的全部3个用户。咱们一步步排查解决:

首先验证接口本身的返回

先抛开你封装的categoryApi,直接用axios调用目标接口,确认接口返回的内容:

axios.get('https://reqres.in/api/users?page=1')
  .then(response => {
    console.log('接口原始返回的data数组:', response.data.data);
  })
  .catch(err => console.error('请求出错:', err));

正常情况下,这个调用会输出一个包含3个用户对象的数组——这说明接口本身是没问题的,问题出在你的categoryApi.getOne封装函数里。

排查封装函数的两个常见问题

问题1:封装函数调用了错误的接口路径

Reqres的API里,/api/users/1是单个用户详情接口(返回单个用户对象),而/api/users?page=1才是分页用户列表接口(返回包含多个用户的数组)。

如果你的categoryApi.getOne实现是这样的:

// 错误示例:用路径参数id而不是查询参数page
const categoryApi = {
  getOne(id) {
    return axios.get(`https://reqres.in/api/users/${id}`);
  }
};

那调用getOne(1)实际请求的是单个用户接口,自然只会返回第一个用户。

解决办法:修改封装函数,使用查询参数page来请求分页列表:

// 正确的封装:根据页码获取用户列表
const categoryApi = {
  getUsersByPage(pageNumber) {
    return axios.get(`https://reqres.in/api/users?page=${pageNumber}`);
  }
};

然后调用时用:

categoryApi.getUsersByPage(1).then(response => {
  if (response.data) {
    console.log('categories: ', response.data.data); // 现在会输出3个用户的数组
  }
});

问题2:封装函数在响应处理中截取了第一个元素

如果你的categoryApi.getOne确实调用了分页接口,但在处理响应时错误地取了数组的第一个元素,比如:

// 错误示例:截取了数组第一个元素
const categoryApi = {
  getOne(pageNum) {
    return axios.get(`https://reqres.in/api/users?page=${pageNum}`)
      .then(response => {
        // 这里错误地只返回第一个用户
        return { data: { data: response.data.data[0] } };
      });
  }
};

这也会导致你拿到的只有单个用户。

解决办法:去掉截取逻辑,直接返回完整的响应或完整的data数组:

const categoryApi = {
  getOne(pageNum) {
    // 直接返回axios的响应结果
    return axios.get(`https://reqres.in/api/users?page=${pageNum}`);
    // 或者如果需要统一格式,返回完整的data对象
    // return axios.get(...).then(res => ({ data: res.data }));
  }
};

总结

先通过原生调用确认接口返回,再检查封装函数的路径和响应处理逻辑,这两个点是导致你只拿到单个用户的最常见原因。调整后应该就能拿到该页的全部3个用户对象了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:52:18