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

补充要点

相关推荐
iCoding9136 分钟前
前端分页 vs 后端分页:技术选型
前端·后端·系统架构
王中阳Go背后的男人42 分钟前
我发现不管是Java还是Golang,懂AI之后,是真吃香!
后端
焰火199944 分钟前
[Java]基于Redis的分布式环境下的自增编号生成器
java·后端
用户68545375977691 小时前
SQL优化完全指南:让你的数据库从"蜗牛"变"猎豹"!🐌➡️🐆
后端
大巨头1 小时前
豆包帮忙梳理知识点,真强大!
后端
疯狂的程序猴1 小时前
Vue前端开发工具大全,从编码到调试的高效工作流指南
后端
渣哥1 小时前
别再乱用了!Spring AOP 与 AspectJ 的区别比你想的复杂
javascript·后端·面试
hui函数1 小时前
Python全栈(基础篇)——Day10:后端内容(map+reduce+filter+sorted+实战演示+每日一题)
后端·python
hui函数1 小时前
Python全栈(基础篇)——Day13:后端内容(模块详解)
后端·python
摆烂工程师2 小时前
什么是 ChatGPT Business 会员?与 ChatGPT Plus 有什么不同?
前端·后端·程序员