Um momento
Aula 01
Cursos / GraphQL com Express (Servidor Backend API JSON)
Os Problemas de API REST que o GraphQL quer Resolver (Curso Tutorial)

Summary

# Resumo do Curso de GraphQL

## Introdução ao GraphQL

No curso, vamos aprender sobre GraphQL do lado do servidor (back-end). Para entender o GraphQL, é importante primeiro conhecer as APIs, especialmente o estilo REST.

## APIs e REST

- As APIs normalmente servem dados em formato JSON e utilizam o método REST.
- Em REST, você possui vários endpoints para obter dados, utilizando os métodos HTTP:
  - `GET /companhias`: Obtém todas as companhias (indice).
  - `GET /companhias/{ID}`: Obtém uma única companhia (show).
  - `POST /companhias`: Cria uma nova companhia.
  - `PUT /companhias/{ID}` ou `PATCH /companhias/{ID}`: Atualiza uma companhia existente.
  - `DELETE /companhias/{ID}`: Deleta uma companhia.

## Problemas do REST

1. **Excesso de Dados**:
   - Muitas vezes, você obtém mais informações do que realmente precisa, resultando em desperdício de bandwidth.

2. **Múltiplos Pedidos**:
   - Se você precisa de dados de várias companhias, pode ser necessário fazer vários pedidos, o que é ineficiente.

3. **URLs Longas e Aninhadas**:
   - Quando há relacionamentos complexos (ex: companhias com produtos e modelos), as URLs se tornam muito longas e difíceis de gerenciar.

## Solução com GraphQL

O GraphQL visa resolver os problemas apresentados pelo REST, oferecendo uma maneira mais eficiente de obter e manipular dados, reduzindo o número de pedidos e a quantidade de dados desnecessários transferidos.

Nas próximas aulas, iremos aprender como implementar e utilizar o GraphQL.

Até a próxima!

Video Transcript

Olá pessoal, neste curso nós vamos falar de GraphQL. Então, a gente vai aprender GraphQL do lado do servidor, do back-end, tá certo? A gente vai aprender como fazer este negócio de GraphQL. Então, o que é que é o GraphQL? Para a gente entender isso, primeiro a gente tem que falar de API's, de REST. Então, vamos aqui no editor de texto primeiro aqui. Deixa eu ir no terminal, abri o editor de texto. Então, você vai ter que ter um, o conhecimento básico de API's, normalmente que servem dados em formato JSON, tem aquele negócio chamado REST. Então, a maneira REST você tem vários chamados endpoints, né? Pontos para você obter os dados. Por exemplo, se eu tiver um modelo chamado companhia, tá? Para representar uma companhia, a gente tem o get barra companhias, que é para obter todas as, os dados das companhias, né? Chamado de index, normalmente. Aí, se você quiser pegar os dados de uma só companhia, você vai pegar, vai fazer um pedido para o get barra companhia, barra o ID da companhia, né? O ID. Esse é o chamado show, né? E tem também o, para poder criar uma companhia, você vai post, barra companhias, se quiser atualizar, é put, barra companhias, barra ID ou o patch. Barra ID, se quiser bela, tá delete. Barra ID, né? Barra o ID. Então, essa é a maneira rest de você nomear, né? À suas, os seus endpoints, né? Se você quiser acessar o recurso, o recurso aqui é chamado companhia. Todas as companhias, dá o verbo get, de HTTP, seguido de barra companhias, para acessar dados de uma companhia específica, verbo get, combinar de companhia, barra o ID da companhia, para criar uma companhia da oposto, barra companhias, para atualizar da oposto ou o patch, barra companhias, barra o ID da companhia, para dela estar finalmente, barra companhias, barra o ID da companhia. Então, tem esse negócio rest. Você note que tem um, dois, três, quatro, cinco, cinco endpoints, cinco pontos que você tem que atingir, para poder obter, fazer a operação que você quiser, né? Normalmente, quando você dá o get companhias, ele vai retornar, por exemplo, se cada companhia é representada por um objeto assim, com o ID, um, dois, três, e o nome da companhia, sei lá, é por... E se você falar get barra companhias, você vai pegar, por exemplo, vai retornar da API uma lista com várias... JavaScript, com vários objetos assim, seis, quatro, cinco, assim por diante. Companhia, minha companhia. Então, normalmente, não tem só o ID nome, normalmente, quando a gente lidar com esses APIs, tem vários, muito mais propriedades aqui. Tem várias propriedades, não só duas, nesse caso, tem várias. E às vezes, a gente nem usa essas propriedades, a gente faz o pedido e termina não usando todas as propriedades, sei lá, se você está fazendo um índice, você vai querer o ID e o nome, aí nem usa as outras. Então, é uma perca de bandwidth, né? Uma perca de banda, você gasta tanta banda para obter essas informações e, no final, nem usa informação. Então, esse é um problema, né? E outro problema também que se eu quiser, sei lá, se eu quiser obter informações de certa companhia, companhias, companhia 1 e 2 e 3, mas eu não quero todos. Então, eu vou ter que fazer três pedidos, get, acompanhar barro ID 1 e ID 2 e ID 3, então vai ser... Se você tivesse uma 100, ia ser 100 pedidos. Então, muito, muito, muito pedidos, certo? Aí tem também outro problema que é o de... O que acontece se você tiver, por exemplo, se a companhia tivesse vários produtos e cada produto tem vários modelos, né? Se você tivesse essa relação, a companhia tem vários produtos, o produto tem vários modelos. Aí, como é que faz o rest? Vai ser para obter, sei lá, barra companhias, por exemplo. Barra o ID, companhia ID, barra produto, barra produto ID, barra modelo, barra modelo, ID. Como é que faz como um negócio fica tão nested, né? Fica tão um negócio. Tem vários, vai ficando para baixo, para baixo, né? Vai descendo de companhia para produto, para modelo. Aí, o URL do endpoint fica longa e tem várias coisas. Mas é claro que há maneiras de você resolver esse problema, mas olhando assim no método rest, essa é a maneira rest de você fazer o URL aqui para localizar o recurso até o modelo que corresponde ao produto, que corresponde ao certo companhia. Então, esse modelo pertence ao produto especificado, que pertence ao companhia especificado. Então, também, o URL fica muito longa. Então, esses são um dos problemas que o GraphQL quer resolver. Então, tem o problema de você receber muito informação e nem usar. E, às vezes, também, tem o outro problema de você receber pouca informação e ainda precisar demais. Por isso, você vai ter que fazer mais pedidos para poder obter todas as informações necessárias. E, nesse vai e vem de fazer mais pedidos, você vai ter que... Você nem vai usar todos os dados. Então, quando você tem um celular, por exemplo, e você está no local que a internet, a conexão, não é muito boa, você vai baixar os dados e tem muitos dados para baixar e vai ficar lento. Se você pegar e cortar, tirar todos os dados que não precisa, vai diminuir o tamanho daquela coisa que você tem que baixar e vai ficar mais rápido para o usuário, ainda que ele esteja no local de conexão péssima. Então, por isso, é uma das coisas que o GraphQL quer resolver. E já falamos também de vários pedidos. Às vezes, tem muitos pedidos. A gente não quer tanto pedidos, eu quero fazer um de uma vez e tem o problema da URL que fica muito longo assim, tá? Então, agora que a gente vai entender o que é que o GraphQL quer resolver, que tem esses problemas no resto, a gente vai aprender na próxima aula como é que a gente vai fazer isso tudo, tá bom? Então, até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: