.NET Core中如何调用存储在appsettings.json中的API地址
.NET Core 中存储调用API地址的配置方案
1. 配置存储正确性确认
你给出的appsettings.json存储方式完全合法,写法正确:
"MyApi": { "API": "http://example.com" }
注意该节点需放在appsettings.json的根层级大括号内部,不要嵌套到其他已有配置节点下。
2. 访问配置的常用方式
方式1:通过配置绑定+IOptions模式访问(推荐)
- 首先创建对应配置的实体类
public class MyApiSettings { public string API { get; set; } }
- 在
Program.cs中注册配置绑定
// .NET 6+ 顶级语句写法 builder.Services.Configure<MyApiSettings>(builder.Configuration.GetSection("MyApi"));
- 在需要使用的控制器/服务中通过构造函数注入使用
public class YourService { private readonly MyApiSettings _apiSettings; public YourService(IOptions<MyApiSettings> apiOptions) { _apiSettings = apiOptions.Value; } public void TestCall() { var apiAddress = _apiSettings.API; // 即可拿到配置的API地址 } }
方式2:直接绑定到HttpClient注册(配合IHttpClientFactory最佳实践)
不建议直接new HttpClient,容易引发端口耗尽问题,推荐用官方推荐的IHttpClientFactory方案,注册时直接读取配置赋值:
// Program.cs 中注册 builder.Services.AddHttpClient("MyApiClient", client => { client.BaseAddress = new Uri(builder.Configuration["MyApi:API"]); });
使用时注入IHttpClientFactory即可直接拿到预配置好基地址的客户端:
public class YourService { private readonly HttpClient _apiClient; public YourService(IHttpClientFactory httpClientFactory) { _apiClient = httpClientFactory.CreateClient("MyApiClient"); } public async Task<string> CallApiAsync() { // 直接基于配置的基地址发起请求即可 return await _apiClient.GetStringAsync("/some/endpoint"); } }
额外注意
如果存储的是敏感类配置(比如接口密钥、账号密码),生产环境不要明文放在appsettings.json中,建议配合ASP.NET Core密钥管理器、环境变量、云配置中心等加密存储方案使用。
内容的提问来源于stack exchange,提问作者moris62
相关产品推荐
相关产品推荐

