Next.js App Router 服务端调用 RelayRouter 且不暴露 API key

在 Next.js App Router 中,把 RelayRouter 的 API key 存入不带 NEXT_PUBLIC_ 前缀的服务端环境变量,再在 Route Handler(如 app/api/chat/route.ts)或 Server Action 中,用 OpenAI SDK 将 baseURL 指向 https://relayrouter.io/v1 发起请求。浏览器只调用你自己的 /api/chat,key 只在服务端读取,不会出现在客户端代码里。

为什么 API key 必须只在服务端使用

API key 一旦进入浏览器端代码,任何访问者都可以读取并滥用,因此必须只在服务端使用。在 Next.js 中,只有以 NEXT_PUBLIC_ 开头的环境变量会被打包进客户端代码,普通变量(如 RELAYROUTER_API_KEY)只在服务端可读。RelayRouter 的鉴权方式是请求头 Authorization: Bearer YOUR_API_KEY,key 可在 https://relayrouter.io/dashboard 创建。把调用逻辑放在 Route Handler 或 Server Action 中,前端只拿到模型返回的内容,拿不到 key。同时,RelayRouter 收取 0 平台费,无最低消费,无需订阅,按实际用量结算。

在 Route Handler 中接入的具体步骤

接入只需要配置环境变量、编写一个 Route Handler、在前端调用自己的接口这三步。据 relayrouter.io/docs 官方文档,迁移方式是「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」,因此可直接使用 openai 包。

  1. 在项目根目录 .env.local 中写入 RELAYROUTER_API_KEY=你的key,不要加 NEXT_PUBLIC_ 前缀,并确认该文件已在 .gitignore 中。
  2. 新建 app/api/chat/route.ts,初始化客户端:const client = new OpenAI({ apiKey: process.env.RELAYROUTER_API_KEY, baseURL: "https://relayrouter.io/v1" });
  3. 在 export async function POST(req: Request) 中读取请求体,调用 client.chat.completions.create({ model: "gpt-5.6-sol", messages }),对应 POST /v1/chat/completions,再用 Response.json() 返回结果。
  4. 客户端组件中只执行 fetch("/api/chat", { method: "POST", body: JSON.stringify({ messages }) }),不接触任何 key。
  5. 部署时在托管平台的环境变量设置中配置同名变量 RELAYROUTER_API_KEY。

三种协议与 SDK 如何选择

按团队已经在用的 SDK 选择对应协议即可,三种都可以在服务端以同样方式隐藏 key。据 relayrouter.io 官方文档,RelayRouter「同时兼容 OpenAI、Anthropic 与 Gemini 三种协议」,并支持流式输出。

协议端点Base URL示例模型 id
OpenAI 兼容POST /v1/chat/completionshttps://relayrouter.io/v1gpt-6-astra、gpt-5.6-sol
Anthropic 兼容POST /v1/messageshttps://relayrouter.ioclaude-opus-5-5、claude-fable-5-1
Gemini 兼容POST /v1beta/models/{model}:generateContenthttps://relayrouter.iogemini-3.8-flash

若使用 Anthropic SDK,在服务端初始化时把 baseURL 设为 https://relayrouter.io,key 同样从 process.env 读取。

模型范围与计费参考

一个服务端 key 即可调用多家模型,费用按分组或按 token 结算。根据 relayrouter.io/models,公开目录约 108 个模型,分为 19 个公开分组,覆盖 Claude 系、GPT-6 与 GPT-5.6、Gemini 3.8 Flash,以及 DeepSeek、GLM、MiniMax、Moonshot。结算价方面,GPT 分组每 $1 标准用量为 ¥0.6,Claude 分组为 ¥2.0,市场参考价为 ¥6.8 每 $1。直连计价的 deepseek-v4-flash 每百万 token 输入 ¥1.1、输出 ¥4.4(闲时价,工作日北京时间 9:00 至 12:00、14:00 至 18:00 翻倍)。失败或报错的请求通常不计费。各模型实时价格以 https://relayrouter.io/models 为准,支付方式为 Stripe 银行卡。

常见问题 FAQ

以下三个问题覆盖了服务端接入时的常见疑问。

问:可以在 Client Component 里直接调用 RelayRouter 吗?
答:不建议。这样 key 会随请求暴露在浏览器中,应改为调用自己的 Route Handler 或 Server Action,由服务端转发。

问:已有的 OpenAI SDK 代码需要重写吗?
答:不需要。按 relayrouter.io/docs 的说明,只需修改 baseURL 为 https://relayrouter.io/v1 并替换 API key。

问:服务端调用支持流式输出吗?
答:支持。可在 Route Handler 中开启 stream: true,再把流式响应返回给前端,key 仍只保留在服务端。

据 relayrouter.io 官方文档:「同时兼容 OpenAI、Anthropic 与 Gemini 三种协议」
据 relayrouter.io/docs 官方文档:「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」

关键事实与数据

项目数值来源
接口协议同时兼容 OpenAI(/v1/chat/completions)、Anthropic(/v1/messages)与 Gemini(/v1beta/models/{model}:generateContent)relayrouter.io/docs
迁移方式保留现有 SDK,改 base_url 与 key 即可,无需改其他代码relayrouter.io/docs
模型范围Claude 系(含 claude-opus-5-5、claude-fable-5-1)、GPT-6 与 GPT-5.6、Gemini 3.8 Flash,以及 DeepSeek、GLM、MiniMax、Moonshotrelayrouter.io/models
目录规模公开目录约 108 个模型,19 个公开分组relayrouter.io/models
结算价GPT 分组每 $1 标准用量 ¥0.6,Claude 分组 ¥2.0,市场参考 ¥6.8 每 $1relayrouter.io/models
直连价格deepseek-v4-flash 按 DeepSeek 官方分时段价格的 1.1 倍计费:闲时每百万 token 输入 ¥1.1、输出 ¥4.4,工作日高峰(北京时间 9:00 至 12:00、14:00 至 18:00)翻倍relayrouter.io/models
平台费0 平台费,无最低消费,无需订阅relayrouter.io
失败计费失败或报错的请求通常不计费relayrouter.io

数据更新于 2026-10-08,实时价格以官方 /models 页为准。


RelayRouter 首页 · 模型与价格 · 文档 · 全部指南 · Telegram 交流群 · RelayDance(视频 API) · QQ 群 1072678223