معرفی
برای مدیریت یکپارچه اطلاعات پیکربندی برنامه، برخی از ما از راه حل های منبع باز مانند Consul، Etcd و غیره استفاده می کنیم، و برخی از ما آنها را توسط مرکز پیکربندی خصوصی خود نگهداری می کنیم و API های RESTful را برای توسعه دهندگان ارائه می دهیم.
در این مقاله، من یک راه ساده برای ادغام API های RESTful در سیستم پیکربندی ASP.NET Core را معرفی می کنم که متعلق به ارائه دهنده تنظیمات سفارشی است.
اگر هیچ ایده ای از پیکربندی ASP.NET Core ندارید، می توانید ابتدا سند زیر را بخوانید.
API ساده RESTful
ما منبع داده پیکربندی را در این بخش آماده خواهیم کرد. نتیجه پاسخ API های RESTful تعیین می کند که چگونه می توانیم تجزیه و ادغام کنیم.
برای تکمیل این پروژه یک پروژه ASP.NET Core Web API ایجاد کنید.
- [ApiController]
- [Route("[controller]")]
- public class ConfigController : ControllerBase
- {
- [HttpGet]
- public IActionResult Get([FromQuery]string appName, [FromQuery]string env)
- {
- if (string.IsNullOrWhiteSpace(appName))
- return BadRequest("appName is empty");
- if (string.IsNullOrWhiteSpace(env))
- return BadRequest("env is empty");
- return Ok(ConfigResult.GetResult(appName, env));
- }
- public class ConfigResult
- {
- public int Code { get; set; }
- public string Msg { get; set; }
- public Dictionary<string, string> Data { get; set; }
- public static ConfigResult GetResult(string appName, string env)
- {
- var rd = new Random();
- var dict = new Dictionary<string, string>
- {
- { "appName", appName },
- { "env", env },
- { "key1", $"val1-{rd.NextDouble()}" },
- { "key2", $"val2-{rd.NextDouble()}" },
- { "SC1__key1", $"sc1_val1-{rd.NextDouble()}" },
- { "SC2:key1", $"sc2_val1-{rd.NextDouble()}" },
- };
- return new ConfigResult
- {
- Code = 0,
- Msg = "OK",
- Data = dict
- };
- }
- }
- }
برای شبیه سازی تغییر پیکربندی، در اینجا مقداری تصادفی به هم متصل می شود.
هنگام دسترسی به این API، نتیجه متفاوتی دریافت خواهید کرد.
ارائه دهنده پیکربندی RESTful API
این مهمترین بخش این مقاله است. سه مرحله وجود دارد که باید انجام دهیم.
کلاسی ایجاد کنید که IConfigurationSource را