Asp.net core 如何在配置文件中分配API URL的基本路径?
我有一个ASP.NET core REST API服务和.NET core 3.1版本。我想在appsettings.json或其他配置文件中为API URL的特定部分创建一个公共变量。例如,如果我的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对于每个到达该控制器方法的请求都是通用的。目前,它是在控制器中设置的。是否有任何方法将该部分放在配置文件中一次,并在需要时获取该变量来设置它? 根据您的描述
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();
}