我有一个api网站,使用swagger公开了api。 dotnet核心版本是2.1,swagger是Swashbuckle.AspNetCore 3.0.0。 我的api网站位于反向代理(nginx)后面,nginx网址为https://www.aa.com/chat,映射到后备服务器http://127.0.0.1:5003/ 我的挥霍配置是: ConfigureServices:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "aa.IM.CustomerApi", Version = "v1" });
var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
var controllerXmlPath = Path.Combine(basePath, "aa.IM.CustomerApi.xml");
var entityXmlPath = Path.Combine(basePath, "aa.IM.Entity.xml");
c.IncludeXmlComments(controllerXmlPath);
c.IncludeXmlComments(entityXmlPath);
//c.DescribeAllEnumsAsStrings();
});
配置:
app.UseSwagger(c =>
{
});
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("v1/swagger.json", "aa.IM.CustomerApi");
});
然后,我可以进入用户界面https://www.aa.com/chat/swagger/index.html 然后ui可以显示出完美的状态,但是,当我执行一个api(uri是cus / settings)时,我发现请求网址https://www.aa.com/cus/settings是错误的,正确的网址是https://www.aa.com/chat/cus/settings。
我该如何修正我的招摇配置来解决这个问题? 我尝试了很多方法,例如http://eatcodelive.com/2017/05/19/change-default-swagger-route-in-an-asp-net-core-web-api/和How to change base url of Swagger in ASP.NET core 但是这些都无法解决我的问题。
答案 0 :(得分:1)
您可以尝试使用app.UseRewriter重写网址。
app.UseRewriter(new RewriteOptions()
.AddRewrite(@"/cus/settings", "Chat$1", skipRemainingRules: true));
请注意,这未经测试,只是写在我的脑海中。
答案 1 :(得分:1)
感谢所有,我通过以下配置对其进行了解决:
app.UseSwagger(c =>
{
c.PreSerializeFilters.Add((doc, requset) =>
{
var root = "https://www.aa.com/chat/";
doc.Host = root;
});
});