Я работаю над новым микросервисом и хотел бы добавить интерфейс API для моих клиентов.
Например.
У меня есть служба поддержки клиентов с ApiController и метод:
[HttpGet("api/v1/[action]")]
[ProducesResponseType((int)HttpStatusCode.BadRequest)]
[ProducesResponseType((int)HttpStatusCode.NotFound)]
[ProducesResponseType(typeof(List<CustomerDto>), (int)HttpStatusCode.OK)]
public async Task<IActionResult> GetCustomers()
{
Log.Logger.Information($"Calling GetCustomers()");
var ret = await _db.Customer.GetListAsync<CustomerDto>();
Log.Logger.Information($"GetCustomers()=>{ret?.Count}");
if (ret == null)
{
return NotFound();
}
return Ok(ret);
}
В моем клиентском коде у меня есть сервисный интерфейс, который абстрагирует HTTP-вызовы к вышеуказанному сервису. Таким образом, мой клиент, использующий этот сервис, может просто ввести ICustomerService
и позвонить GetCustomers()
.
Все это прекрасно работает, однако я бы очень хотел, чтобы на контроллере API был установлен такой же интерфейс ICustomerService
так что я могу поймать любые проблемы во время компиляции. Проблема в том, что ICustomerService.GetCustomer
возвращает List<CustomerDto>
, а контроллер возвращает IActionResult
.
Task<List<CustomerDto>> GetCustomers();
VS
public async Task<IActionResult> GetCustomers(){}
Есть ли способ принудительного включения интерфейса ICustomerService
на контроллер API во время сборки?