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

如何将/api/swagger路由从YARP反向代理中排除?

解决YARP反向代理排除Swagger静态资源路由的问题

问题核心在于:Swagger的静态资源(如swagger-ui.css、swagger-ui-bundle.js等)由Swagger中间件处理,不属于端点路由范畴。而你当前YARP配置中的{**catch-all}路由会匹配所有未被端点路由处理的请求,包括这些Swagger静态资源请求,导致它们被错误转发到前端服务。

只需让YARP优先排除/api/swagger/**路径的请求,不进行转发,留给Swagger中间件处理即可,以下是两种可行方案:

方案一:修改配置文件(推荐)

在appsettings.json的ReverseProxy配置中,添加一个优先级更高的路由规则,专门匹配/api/swagger开头的请求,且不指定转发集群,让请求继续向下流转给Swagger中间件:

"ReverseProxy": {
  "Routes": {
    "swagger-exclude-route": {
      "Order": 0, // 优先级高于catch-all路由(默认Order为100)
      "Match": {
        "Path": "/api/swagger/{**catch-all}"
      }
    },
    "route1": {
      "ClusterId": "cluster1",
      "Match": {
        "Path": "{**catch-all}"
      }
    }
  },
  "Clusters": {
    "cluster1": {
      "HttpClient": {
        "SslProtocols": [
          "Tls12"
        ]
      },
      "Destinations": {
        "cluster1/destination1": {
          "Address": "https://localhost:5173/"
        }
      }
    }
  }
}

YARP的路由匹配按Order值从小到大优先匹配,swagger-exclude-route会先捕获所有/api/swagger开头的请求,由于该路由未配置ClusterId,YARP不会转发这些请求,而是交给后续的Swagger中间件处理。

方案二:代码中配置路由规则

如果不想修改配置文件,可以在代码中直接添加排除路由:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

builder.Services
    .AddReverseProxy()
    .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"))
    // 添加排除Swagger路径的路由规则
    .AddRoute("swagger-exclude", routeBuilder =>
    {
        routeBuilder
            .Order(0)
            .Match("/api/swagger/{**catch-all}")
            .NoCluster(); // 不指定转发集群,让请求继续向下
    });

var app = builder.Build();

app.MapGet("/api/hello", () => "Hello World!");

app.UseSwagger();
app.UseSwaggerUI(options =>
{
    options.RoutePrefix = "api/swagger";
});

app.MapReverseProxy();

app.Run();

验证

修改完成后重启服务,访问https://localhost:5001/api/swagger,检查浏览器控制台,所有Swagger相关的静态资源请求(如swagger-ui.css)应返回200,不会被转发到前端服务https://localhost:5173。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:47:45