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

补充要点

相关推荐
SimonKing14 小时前
Chrome插件千万别乱装!手把手教你从官方渠道安全下载
java·后端·程序员
武子康14 小时前
大数据-84 Spark RDD创建全攻略:从集合、文件到转换操作详解
大数据·后端·spark
软件开发JR14 小时前
基于Spring Boot的社区团购系统的设计与实现
数据库·spring boot·后端·php
小楓120115 小时前
MySQL數據庫開發教學(四) 後端與數據庫的交互
前端·数据库·后端·mysql
这里有鱼汤15 小时前
A股预测还能更准?开源大模型Kronos带你跑通预测+回测全流程
后端·python
shark_chili15 小时前
Java程序员的Linux性能调优宝典:三大经典场景深度剖析
后端
小流苏生15 小时前
或许,找对象真的太难了……
前端·后端·程序员
勇哥java实战分享15 小时前
聊聊六种负载均衡算法
后端
程序视点16 小时前
局域网文件传输神器LocalSend:比微信QQ更快更安全的跨平台传输方案
前端·后端