У меня есть контроллер в моем REST API, где я делаю HttpRequestMessage. Я делаю это прямо сейчас, используя интерфейс IConfiguration для извлечения конечной точки в качестве переменной:
public class MyController : Controller
{
private readonly IConfiguration _configuration;
private readonly HttpClient _httpClient;
public MyController(IConfiguration configuration, HttpClient httpClient){
_configuration = configuration;
_httpClient = httpClient;
}
...
...
[HttpGet]
public async Task<IActionResult> Get(){
...
...
var httpRequest = new HttpRequestMessage(HttpMethod.Get, _configuration["MY_ENDPOINT"]);
await _httpClient.SendAsync(httpRequest);
...
...
return Ok();
}
Дело в том, что, очевидно, лучше вводить конечную точку API через интерфейс и Честно говоря, я не знаю, что и как это делается.
Я делаю инъекцию HttpClient и IConfiguration, но это то, что я делал несколько раз и видел, как это делают другие. Но просто введение конечной точки (без IConfiguration) кажется мне незнакомым. ... только потому, что я удалил код, который не влияет на вопрос.
Есть ли какой-нибудь простой способ просто внедрить конечную точку - и только я не понимаю причина этого?
Я полагаю, мне нужно создать интерфейс и в этом логе c, который просто возвращает конечную точку? Но разве это не просто двойная работа?
МОЕ РЕШЕНИЕ:
Единственный обходной путь, о котором я могу думать в данный момент, - это просто ввести строку:
private readonly string _myEndpoint;
и затем введите его:
_myEndpoint = Environment.GetEnvironmentVariable("MY_ENDPOINT");
и, наконец, используйте это в моем httpRequestMessage:
var httpRequest = new HttpRequestMessage(HttpMethod.Get, _myEndpoint);
Это не интерфейс, но опять же я не использую IConfiguration-интерфейс и не пишите много ненужного кода.
Если есть какое-нибудь лучшее / более умное предложение, пожалуйста, кричите.