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')
})

补充要点

相关推荐
pe7er13 分钟前
window管理开发环境篇 - 持续更新
前端·后端
陈随易5 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·后端·程序员
陈随易6 小时前
AI时代,你还在坚持手搓文章吗
前端·后端·程序员
大鱼七成饱7 小时前
VMware NAT模式下固定内网IP(附详细图文)
后端
IT_陈寒9 小时前
Vue的这个响应式陷阱,我debug了一整天才爬出来
前端·人工智能·后端
兔子零102410 小时前
手把手教你在 Claude Code 中接入 DeepSeek-V4
后端
phenhorlin10 小时前
我做了个工具,让切换 Homebrew 镜像像切 npm 源一样简单
后端·shell
69510 小时前
两周浅学 RAG
后端
AI人工智能+电脑小能手11 小时前
【大白话说Java面试题】【Java基础篇】第24题:Java面向对象有哪些特征
java·开发语言·后端·面试
AI人工智能+电脑小能手11 小时前
【大白话说Java面试题】【Java基础篇】第25题:JDK1.8的新特性有哪些
java·开发语言·后端·面试