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

补充要点

相关推荐
考虑考虑3 小时前
cmd局部设置java变量
运维·后端·自动化运维
陈随易6 小时前
在Finch用了62亿词元,我认为这是新一代Agent工具之神
前端·人工智能·后端
wing987 小时前
从codex转战workbuddy使用一周的感受
前端·人工智能·后端
EatFan7 小时前
Java接入支付宝 JSAPI 支付保姆教程(二):流程讲解与前后端代码讲解
前端·spring boot·后端·微信小程序·小程序·uni-app
步行cgn8 小时前
Spring 报错:No bean class specified on bean definition 的原因与解决
java·后端·spring
凤山老林8 小时前
Spring Boot 整合 Flowable 的企业级落地指南
数据库·spring boot·后端·flowable·工作流
苏三说技术8 小时前
Kafka已正式接入AI
后端
企业数字化笔记8 小时前
AI写的系统出现504怎么办?接口超时和数据库慢查询排查
数据库·后端
IT_陈寒8 小时前
Redis的Set操作居然能把我的服务整挂了?
前端·人工智能·后端
momo061178 小时前
Redis新手入门 -- 学习笔记
redis·后端