Tenho visto que o GraphQL permite ao usuário limitar os dados que recebe, mas isso pode ser feito facilmente em uma API REST.
Você pode ter, por exemplo, um /users
endpoint que receba um query
array no corpo da solicitação, que limite as colunas retornadas do servidor.
Ou há algo mais que estou perdendo?
EDITAR: Como isenção de responsabilidade, não estou pedindo uma opinião sobre qual é o melhor. Estou pedindo coisas concretas que o GraphQL faz e o REST não pode.
Sim, você está absolutamente certo; no REST, você pode projetar um endpoint que aceite parâmetros de consulta ou cabeçalhos de solicitação para controlar quais dados você recebe na resposta. Mas ainda existem algumas diferenças importantes que tornam o GraphQL melhor:
Portanto, embora seja possível tornar o REST mais flexível usando endpoints personalizados e parâmetros de consulta, o GraphQL foi projetado desde o início para fornecer essa flexibilidade e eficiência de uma forma mais intuitiva, especialmente para cenários complexos de recuperação de dados.
Você está certo de que é possível limitar os dados retornados por uma API REST incluindo um parâmetro de consulta na solicitação. No entanto, GraphQL oferece uma série de vantagens. Aqui está um exemplo de consulta GraphQL para buscar o nome e endereço de e-mail de um usuário:
Aqui está um exemplo de solicitação da API REST para buscar os mesmos dados:
Como você pode ver, a consulta GraphQL é mais concisa e fácil de ler. Também é mais flexível, pois você pode facilmente adicionar campos adicionais à consulta sem precisar modificar a solicitação.
Espero ter respondido sua pergunta corretamente
Existem algumas diferenças importantes que tornam o GraphQL mais flexível em determinadas situações. Deixe-me explicar com um exemplo:
REST: Imagine que você deseja buscar informações sobre um livro na API de uma biblioteca. Em uma API REST, você pode ter endpoints como estes:
Para obter o título do livro:
GET /books/1/title
Para obter o autor do livro:GET /books/1/author
Para obter a data de publicação do livro:GET /books/1/publication_date
Cada um desses pontos finais corresponde a uma informação específica sobre o livro. Se precisar de todas essas informações, você precisará fazer três solicitações separadas ao servidor. Isso pode ser ineficiente, especialmente se você quiser mais ou menos dados ou precisar de dados de vários recursos relacionados.
GráficoQL:
No GraphQL, você envia uma única consulta ao servidor especificando exatamente quais dados deseja e recebe de volta apenas esses dados. Veja como ficaria:
Nesta única consulta, você pergunta o título do livro, autor e data de publicação. O servidor então responde com todos os dados solicitados em uma única resposta.