Asp.net core 如何在配置文件中分配API URL的基本路径?

Asp.net core 如何在配置文件中分配API URL的基本路径?,asp.net-core,url-routing,restapi,config-files,base-path,Asp.net Core,Url Routing,Restapi,Config Files,Base Path,我有一个ASP.NET core REST API服务和.NET core 3.1版本。我想在appsettings.json或其他配置文件中为API URL的特定部分创建一个公共变量。例如,如果我的URL是这样的http://localhost:31660/Inventory/v1.0/{Id}/data这里,/Inventory/v1.0对于每个到达该控制器方法的请求都是通用的。目前,它是在控制器中设置的。是否有任何方法将该部分放在配置文件中一次,并在需要时获取该变量来设置它? 根据您的描述

我有一个ASP.NET core REST API服务和.NET core 3.1版本。我想在appsettings.json或其他配置文件中为API URL的特定部分创建一个公共变量。例如,如果我的URL是这样的
http://localhost:31660/Inventory/v1.0/{Id}/data
这里,
/Inventory/v1.0
对于每个到达该控制器方法的请求都是通用的。目前,它是在控制器中设置的。是否有任何方法将该部分放在配置文件中一次,并在需要时获取该变量来设置它?

根据您的描述,我建议您可以考虑使用自定义路由属性来实现您的要求。 您可以创建一个静态类来读取appsettings,然后将
{Id}/data
作为参数传递给自定义路由属性类以满足您的需求

更多详细信息,请参考以下代码:

appsettings.Development.json:

  "apitemplate": "Inventory/v1.0/"
MyApiControllerAttribute类:

public static class AppSettingsConfig
{
    public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
       .SetBasePath(Directory.GetCurrentDirectory())
       .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
       .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true)
       .Build();
}
public class MyApiControllerAttribute : Attribute, IRouteTemplateProvider
{
  

    public MyApiControllerAttribute(string _route) {

       var re = AppSettingsConfig.Configuration.GetValue<string>("apitemplate");

        route = re +_route  ;
        //route = re ;

    }

    public string route { get; set; }

    public string Template => route;
    public int? Order => 0;
    public string Name { get; set; }
}
结果:


有更新吗?我的回答对你有帮助吗?
    [MyApiController("{Id}/data")]
    public FileResult StreamVid(string Id)
    {
         return OK();
    }