在一个控制器中,两个HttpGet处于同一路由上

时间:2019-11-12 22:51:40

标签: c# asp.net-core .net-core

我有以下代码:

非通用控制器:

<None Update="config.json">
  <CopyToPublishDirectory>Always</CopyToPublishDirectory>
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>

通用控制器:

    [Route(Route)]
    public class DogsController : EntityControllerBase<Dog,DogDto>
    {
        public const string Route = "api/dogs";
        public DogsController(IDogsRepository repository) : base(repository)
        {
        }

        [ProducesResponseType(200, Type = typeof(DogDto))]
        [HttpGet)]
        public async Task<ActionResult<IEnumerable<DogDto>>> Get([FromQuery]int kennelId, [FromQuery]DateTimeOffset birthDate)
        {
            return Ok("Hit non-generic controller");
        }

        protected override DogDto ToDto(Dog instance) =>
            new DogDto(instance.Id,
                instance.BirthDate,
                instance.KennelId
                instance.Name);
    }

当用户提供查询参数 public abstract class EntityControllerBase<TEntity, TEntityDto> : ControllerBase where TEntity : IIdentifiable<int> { readonly IRepository<TEntity, int> _repository; protected EntityControllerBase(IRepository<TEntity, int> repository) { _repository = repository; } protected abstract TEntityDto ToDto(TEntity instance); [HttpGet] [ProducesResponseType(200)] public async Task<ActionResult<IEnumerable<TEntityDto>>> GetAll() { var instances = await _repository.GetAll(); return Ok(instances.Select(ToDto)); } } /api/dogs时,我想在kennelId上调用非通用控制器,否则调用通用方法。现在,它总是调用通用控制器。我该如何解决?

0 个答案:

没有答案