Strapi后端访问JSON接口无法获取全部数据如何解决
Strapi医生列表接口仅返回100条数据排查方案
你提到的两个接口都是Strapi自动生成的REST数据接口,出现无参数请求仅返回100条、总数据143条、带姓名检索能返回未出现在基础列表中数据的问题,核心是Strapi REST接口自带默认分页限制导致的:默认无参数请求时单页最多返回100条数据,143条数据里剩余43条默认在第二页,所以基础请求拿不全;带姓名检索时是全量匹配数据,命中第二页的条目时就会正常返回,不属于数据丢失问题。
排查&解决步骤
- 第一步先验证分页逻辑:直接给基础接口追加分页参数请求,路径为
/Doctors?pagination[pageSize]=200,如果返回结果总数变成143条,就确认是默认分页限制的问题。 - 调整接口返回上限:
Strapi v4版本默认配置了单页请求最大返回条数为100,直接传大pageSize参数会被拦截,需要手动修改配置放开限制:- 找到Strapi项目下的
config/api.js文件,不存在则手动新建 - 写入如下配置,按需调整最大返回条数:
module.exports = { rest: { defaultLimit: 100, // 无参数时默认返回条数 maxLimit: 500, // 单页允许返回的最大条数,根据你业务实际最大数据量设置即可 }, };- 保存配置后重启Strapi服务,再携带大pageSize参数的请求就能正常返回全量数据。
- 找到Strapi项目下的
- 大数据量场景的推荐方案:如果后续医生数据会持续增长到上千条,不建议把maxLimit设得过高,避免单次查询负载过高拖垮服务,改用分页遍历的方式拿全量数据即可:逐页请求,参数格式为
pagination[page]=页码&pagination[pageSize]=单页条数,直到某页返回的条目数小于你设置的pageSize,就说明已经取完所有数据。 - 特殊场景排查:如果调整分页参数后返回条数仍然和后台总数对不上,检查两个点:
- 接口权限是否配置了额外过滤规则:比如公开接口默认只返回已发布内容,如果你后台统计的143条包含未发布的草稿,接口默认会过滤掉这部分,追加参数
?publicationState=preview即可同时返回草稿和已发布内容,按需给对应角色开预览权限即可。 - 是否在路由、控制器、service层写了自定义查询逻辑,追加了额外的过滤条件,把部分数据筛掉了,顺着接口执行链路查自定义逻辑即可。
- 接口权限是否配置了额外过滤规则:比如公开接口默认只返回已发布内容,如果你后台统计的143条包含未发布的草稿,接口默认会过滤掉这部分,追加参数
内容的提问来源于stack exchange,提问作者mctracy
相关产品推荐
相关产品推荐

