当前位置:   article > 正文

ASP.Net Core设置接口根路径的方法

ASP.Net Core设置接口根路径的方法

使用asp.net core开发微服务项目,需要给每个服务设置不同的根路径,这样既能使用网关转发请求,又方便对单个服务进行测试,保证请求路径的统一。
设置方法需要使用中间件,在Program.cs添加如下代码

app.UsePathBase("/acl");

app.MapControllers();

app.Urls.Add("http://0.0.0.0:8081");

app.Run();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

其中,UsePathBase方法添加了一个中间件,设置所有请求的根路径是acl,要注意中间件添加的位置,在MapControllers方法前面,才能生效。
但是,这样做了以后,swagger相关的接口路径并没有发生变化。也就是说,所有的接口都对应两个请求路径,一个是以acl开头的路径,另一个是swagger里面的请求路径。如果想让swagger的接口路径都加上相同的前缀,需要改成如下代码

if (app.Environment.IsDevelopment())
{
    
    app.UseSwaggerUI(options =>
    {
        options.RoutePrefix = "acl";
        options.SwaggerEndpoint("swagger/v1/swagger.json", "system");
    });
    app.UsePathBase("/acl");
    app.UseSwagger();
    app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
}
else
{
    app.UsePathBase("/acl");
}

app.MapControllers();

app.Urls.Add("http://0.0.0.0:8081");


app.Run();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

重点是这一部分

app.UseSwaggerUI(options =>
{
    options.RoutePrefix = "acl";
    options.SwaggerEndpoint("swagger/v1/swagger.json", "system");
});
app.UsePathBase("/acl");
app.UseSwagger();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这样一来,swagger的接口路径也都带有acl前缀了。
访问http://localhost:8081/acl/index.html,就能打开swagger的页面,可以看到,请求路径已经变了
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/960967
推荐阅读
相关标签
  

闽ICP备14008679号