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


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

    app.UsePathBase("/acl");
    
    app.MapControllers();
    
    app.Urls.Add("http://0.0.0.0:8081");
    
    app.Run();
    

    其中,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();
    

    重点是这一部分

    app.UseSwaggerUI(options =>
    {
        options.RoutePrefix = "acl";
        options.SwaggerEndpoint("swagger/v1/swagger.json", "system");
    });
    app.UsePathBase("/acl");
    app.UseSwagger();
    

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

  • 相关阅读:
    工业和能源1994-2019年省级面板数据
    关于 ‘cosylocal‘ 进程占满内存的问题
    ActiveReportsJS 3.2 中文版前端在线报表ActiveReportsJS
    Redis——》数据类型:Hash(哈希)
    开源Linux社区Armbian开发指南
    ThreadLocal详解
    什么原因导致香港服务器变慢?解决办法
    初识Scrapy和使用
    通过git服务提高端侧开发调试效率
    值传递和引用传递详解
  • 原文地址:https://blog.csdn.net/woshihedayu/article/details/140956516