1
resposta

Post não está retornando todos os Livros filtrados/ordenados por titulo e subtitulo

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);
    }

  ...
1 resposta

Você tem 10 livros ao total cadastrados?

Se sim, a sua quesry string autor=rc está limitando o retorno para todos aqueles livros cujo autor contêm dentro de seu nome a string rc.

Se não tiver 10 livros, comente para sabermos.