AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 77441432
Accepted
UndercoverCoder
UndercoverCoder
Asked: 2023-11-08 04:58:18 +0800 CST2023-11-08 04:58:18 +0800 CST 2023-11-08 04:58:18 +0800 CST

O que o GraphQL faz que o REST não pode fazer? [fechado]

  • 772
Fechado . Esta questão é baseada em opinião . No momento não está aceitando respostas.

Quer melhorar esta questão? Atualize a pergunta para que ela possa ser respondida com fatos e citações editando esta postagem .

Fechado há 10 horas .

Melhore esta questão

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 /usersendpoint que receba um queryarray 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.

rest
  • 3 3 respostas
  • 52 Views

3 respostas

  • Voted
  1. Best Answer
    Taha Ali
    2023-11-08T05:27:35+08:002023-11-08T05:27:35+08:00

    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:

    1. Busca excessiva: em REST, o servidor ainda pode incluir dados extras na resposta que o cliente não precisa, resultando em busca excessiva. Com GraphQL, você pode ser mais preciso e evitar esse problema.
    2. Vários endpoints: em uma API REST grande e complexa, pode ser necessário criar muitos endpoints personalizados, dificultando a manutenção e a documentação. GraphQL usa um único endpoint para todas as consultas, que é mais fácil de gerenciar e explorar
    3. Consultas complexas: GraphQL permite que os clientes expressem consultas mais complexas e solicitem dados profundamente aninhados em uma única solicitação, tornando mais intuitivo para os clientes buscar informações relacionadas.
    4. Atualizações em tempo real: GraphQL possui suporte integrado para assinaturas em tempo real, o que não é um recurso padrão em REST.

    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.

    • 1
  2. Sepehr
    2023-11-08T05:04:59+08:002023-11-08T05:04:59+08:00

    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:

    query {   user(id: 1) {
    name
    email   } }
    

    Aqui está um exemplo de solicitação da API REST para buscar os mesmos dados:

    GET /users/1?fields=name,email
    

    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

    • 0
  3. Taha Ali
    2023-11-08T05:07:25+08:002023-11-08T05:07:25+08:00

    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:

    query {   book(id: 1) {
        title
        author
        publication_date   } }
    

    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.

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve