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

Next.js调用API获取单个文档详情时出现404错误求助

排查Next.js动态路由调用API 404问题的常见原因

1. 前端API请求基础路径配置不一致

  • 列表页可能使用了完整后端域名(如http://backend:8000/api/invoices)发起请求,但详情页仅用相对路径/api/invoice/${id},导致请求被发送到前端容器端口而非后端容器。
  • 统一使用环境变量拼接请求地址,比如${process.env.NEXT_PUBLIC_API_URL}/invoice/${id},确保前后端请求的基础路径一致。

2. 动态路由参数传递错误

  • 确认动态路由文件命名是否为[id].js/tsx,且放置在正确目录(如pages/invoice/[id].js)。
  • 检查参数获取逻辑:服务端渲染用context.params.id,客户端组件用useRouter().query.id,避免参数被转义、截断或丢失(比如UUID这类带特殊字符的ID)。

3. Docker容器网络配置问题

  • 即便浏览器能直接访问后端API,前端容器可能无法通过相对路径解析到后端服务。确保两个容器处于同一自定义Docker网络,前端能通过后端服务名(如backend)访问后端。
  • 若前端用反向代理,检查/api路径是否被正确转发到后端容器端口。

4. API Platform路由匹配规则不匹配

  • 确认后端API详情接口路径是否为复数形式(如/api/invoices/{id}),而前端请求的是单数/api/invoice/${id},单复数、大小写差异都会导致404。
  • 查看后端/api/docs文档,核对详情接口的准确路径,保证前端请求路径与后端定义完全一致。

5. Next.js数据获取逻辑问题

  • 若使用getStaticProps,检查fallback配置:设为false时,未预生成的动态路由会直接返回404;设为true或blocking时,需确保首次访问时的API调用逻辑正确。
  • 服务端渲染(getServerSideProps)时,注意服务端环境的网络配置与客户端不同,确认服务端发起的请求能正常访问后端容器。

6. 请求方法或头部差异

  • 浏览器直接访问用的是GET方法,检查前端代码是否误用POST等其他方法调用详情接口。
  • 确认请求头部符合API Platform要求,比如是否携带Accept: application/ld+json,部分场景下缺少必要头部会导致API返回404。

内容的提问来源于stack exchange,提问作者PЯINCƎ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 15:52:05