You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Next.js中限制特定API端点的生产环境访问?

在Next.js中禁用生产环境的API端点

可以通过两种方式实现,具体如下:

方法一:用 Middleware 全局拦截

在项目根目录新建 middleware.js(或 .ts)文件,通过全局中间件拦截指定API路径,生产环境下直接返回禁止访问的响应:

import { NextResponse } from 'next/server';

export function middleware(request) {
  const isProduction = process.env.NODE_ENV === 'production';
  // 列出所有需要禁用的API路径
  const restrictedPaths = ['/api/dev-only', '/api/local-test'];

  if (isProduction && restrictedPaths.includes(request.nextUrl.pathname)) {
    return new NextResponse('此端点仅支持本地环境访问', { status: 403 });
  }

  return NextResponse.next();
}

// 只对API路径生效,避免拦截其他页面
export const config = {
  matcher: '/api/:path*',
};

方法二:在单个API端点内判断环境

如果只是少数几个API需要禁用,直接在对应的API文件开头添加环境判断逻辑即可,无需全局中间件:

App Router 示例

// app/api/dev-only/route.js
export async function GET(request) {
  if (process.env.NODE_ENV === 'production') {
    return new Response('此端点在生产环境不可用', { status: 403 });
  }

  // 本地环境执行的业务逻辑
  return new Response('本地测试返回内容', { status: 200 });
}

Pages Router 示例

// pages/api/dev-only.js
export default function handler(req, res) {
  if (process.env.NODE_ENV === 'production') {
    res.status(403).json({ message: '此端点仅支持本地环境访问' });
    return;
  }

  // 本地环境的处理逻辑
  res.status(200).json({ message: '本地测试响应' });
}

关于 next.config.mjs 的说明

next.config.mjs主要负责Next.js的构建配置、路由规则等基础设置,无法直接实现API端点的禁用逻辑,所以不建议用它来处理这个需求。

内容的提问来源于stack exchange,提问作者psygo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:02:38