Nuxt3 服务端调用其他 api 的方式

在服务端(server/api 或 server/routes 中)调用第三方或内部 API,常用且推荐的方式有三种,按场景选用:

  1. 直接用 $fetch(最简单)
  • 适合不需要转发当前请求头/上下文的外部请求。
  • 内部相对路径时,SSR 会做"直连"(避免额外 HTTP 往返)。($fetch)
dart 复制代码
// server/api/external.get.ts
export default defineEventHandler(async () => {
  return await $fetch('https://api.example.com/data')
})
  1. 用 event.$fetch(在服务端路由内转发上下文与头部)
  • 会自动转发当前请求的上下文与安全头部(会过滤不该转发的头)。适合需要带上用户 cookie/认证头的场景。(Forwarding context & headers)
csharp 复制代码
// server/api/forward.get.ts
export default defineEventHandler((event) => {
  return event.$fetch('https://api.example.com/needs-auth')
})
  1. 自定义 $fetch 实例并注入(统一 baseURL、鉴权、错误处理)
  • 通过插件创建 $api,在服务端与客户端都可用;在组件中可配合 useAsyncData/useFetch 使用。(Custom $fetch)
javascript 复制代码
// plugins/api.ts
export default defineNuxtPlugin((nuxtApp) => {
  const api = $fetch.create({ baseURL: 'https://api.example.com' })
  return { provide: { api } }
})

// server/api/by-plugin.get.ts
export default defineEventHandler(async () => {
  const { $api } = useNuxtApp()
  return await $api('/items')
})

补充要点

相关推荐
yk100105 小时前
Spring DefaultSingletonBeanRegistry
java·后端·spring
databook5 小时前
Manim实现涟漪扩散特效
后端·python·动效
间彧5 小时前
死锁(Deadlock)深入解析
后端
小信丶5 小时前
Spring Boot请求体缺失异常分析与解决方案
java·spring boot·后端
零千叶6 小时前
Spring / Spring Boot 常用注解
java·spring boot·后端
用户6120414922136 小时前
支持eclipse+idea+mysql5和8的javaweb学生信息管理系统
java·javascript·后端
我不是混子6 小时前
说说建造者模式
java·后端
用户4099322502126 小时前
PostgreSQL UPDATE语句怎么玩?从改邮箱到批量更新的避坑技巧你都会吗?
后端·ai编程·trae
我是谁的程序员6 小时前
前端调试工具有哪些?常用前端调试工具推荐、前端调试工具对比
后端
一直_在路上6 小时前
Go语言架构实践:构建临床ePRO高性能内存数据网格,应对海量并发挑战
后端