Вот как мне нравится это делать:
[HttpGet]
[ProducesResponseType(typeof(IList<Currency>), 200)]
public async Task<IActionResult> GetAll()
{
return Ok(await _typeService.GetCurrenciesAsync().ConfigureAwait(false));
}
[HttpGet("{id}", Name = "GetCurrency")]
[ProducesResponseType(typeof(Currency), 200)]
public async Task<IActionResult> Get([FromRoute]int id)
{
return Ok(await _expenseService.GetCurrencyAsync(id).ConfigureAwait(false));
}
Мы можем видеть в чванстве что-то вроде этого:
/api/Currency
/api/Currency/{id}
Ваш базовый контроллер может быть примерно таким, чтобы включать базовый маршрут:
[Authorize(Policy = Common.Security.Policies.ApiUser)]
[Route("api/[controller]")]
[Benchmark, ApiController]
public abstract class BaseController : ControllerBase
{
protected BaseController()
{ }
}
Вот конструктор контроллера для полноты:
public class CurrencyController : BaseController
{
private readonly IExpenseEntryService _expenseService;
private readonly ITypeService _typeService;
public CurrencyController(ITypeService typeService, IExpenseEntryService expenseService)
{
_expenseService = expenseService;
_typeService = typeService;
}