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

为何携带populate=*参数时Axios请求返回404 Not Found错误?

问题解决:Axios请求带populate=*时返回404错误

问题说明

在React应用中使用Axios向API发送GET请求,当URL包含查询参数populate=*时,始终返回404 Not Found错误;移除该参数后请求可正常执行,但无法获取图片详情。

错误信息:

Failed to load resource: the server responded with a status of 404 (Not Found) :1337/api/categories/populate=*

问题代码

Home.jsx

import { FetchDataFromApi } from "../../utils/api";
import { useEffect } from "react";

const Home = () => {
  useEffect(()=>{
    getCategory();
  })
  const getCategory = ()=>{
    FetchDataFromApi("/api/categories/populate=*").then((res)=>{
      console.log(res);
    })
  }
  return (...)
}
export default Home

api.js

import axios from "axios";

const params = {
    headers:{
        Authorization: "bearer " + "myApiToken"
    }
}

export const FetchDataFromApi = async(url)=>{
    try{
        const {data} = await axios.get("http://localhost:1337" + url, params)
        return data;
    }catch (err){
        console.log(err);
        return err;
    }
}

解决步骤

  1. 修正查询参数拼接方式
    populate=*是URL查询参数,必须用?与路径分隔,而非直接作为路径的一部分。修改Home.jsx中的请求URL:
// 错误写法
FetchDataFromApi("/api/categories/populate=*")

// 正确写法
FetchDataFromApi("/api/categories?populate=*")
  1. 优化useEffect避免重复请求
    给useEffect添加空依赖数组,防止组件重复渲染时多次发起请求:
useEffect(()=>{
  getCategory();
}, []) // 添加空数组作为依赖

补充说明

API的查询参数需遵循REST规范,查询参数必须以?开头,多参数用&分隔(例如?populate=*&sort=id:desc)。直接将参数拼入路径会被识别为不存在的API端点,从而触发404错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:30:03