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

补充要点

相关推荐
mldong12 小时前
从 mldong 到 jeeflow:一个工作流引擎的独立进化
后端
陈随易13 小时前
MoonBit抓包模块pcap,查看电脑的每一次联网通信
前端·后端·程序员
Aaron - Wistron13 小时前
Web API C# (Furion版)带 单元测试
开发语言·后端·c#
卷无止境13 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境13 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
IT_陈寒15 小时前
Vite热更新失效?你可能漏了这个配置
前端·人工智能·后端
SomeB1oody16 小时前
【RustyML入门】1.0. 快速上手
开发语言·后端·机器学习·rust·教程
史呆芬17 小时前
分布式事务实战:微服务跨服务数据一致性解决方案
java·后端·spring cloud