Quando executo o comando http://localhost:6000/api/v2.0/livros?autor=rc&ordenarPor=titulo (ou por subtitulo) no Postman retorna com 200 ok porém só retorna um único Livro e não todos os meus 10 livros. Poderiam me ajudar com essa falha?
LivroOrdem:
namespace Alura.WebAPI.Api.Modelos { public static class LivroOrdemExtensions { public static IQueryable AplicaOrdem(this IQueryable query, LivroOrdem ordem) { if (ordem != null) { query = query.OrderBy(ordem.OrdenarPor); } return query; } } public class LivroOrdem { public string OrdenarPor { get; set; } ____ LivroFiltro:
namespace Alura.WebAPI.Api.Modelos
{ public static class LivroFiltroExtensions { public static IQueryable AplicaFiltro(this IQueryable query, LivroFiltro filtro) { if (filtro != null) { if (!string.IsNullOrEmpty(filtro.Titulo)) { query = query.Where(l => l.Titulo.Contains(filtro.Titulo)); } if (!string.IsNullOrEmpty(filtro.Subtitulo)) { query = query.Where(l => l.Subtitulo.Contains(filtro.Subtitulo)); }
if (!string.IsNullOrEmpty(filtro.Autor))
{
query = query.Where(l => l.Autor.Contains(filtro.Autor));
}
if (!string.IsNullOrEmpty(filtro.Lista))
{
query = query.Where(l => l.Lista == filtro.Lista.ParaTipo());
}
}
return query;
}
}
public class LivroFiltro
{
public string Titulo { get; set; }
public string Subtitulo { get; set; }
public string Autor { get; set; }
public string Lista { get; set; }
__________________________________________________________________________________________
Livro2Controller:
namespace Alura.ListaLeitura.Api.Controllers
{ [Authorize] [ApiController] [ApiVersion("2.0")] [Route("api/v{version:apiVersion}/livros")] public class Livros2Controller : ControllerBase { private readonly IRepository _repo;
public Livros2Controller(IRepository<Livro> repository)
{
_repo = repository;
}
[HttpGet]
public IActionResult ListaDeLivros(
[FromQuery] LivroFiltro filtro,
[FromQuery] LivroOrdem ordem)
{
var lista = _repo.All
.AplicaFiltro(filtro)
.AplicaOrdem(ordem)
.Select(l => l.ToApi())
.ToList();
return Ok(lista);
}
...