Aprendendo os fundamentos do GraphQL do Backend ao Frontend!

Overview

📃 Projeto

O GraphQL é totalmente independente da tecnologia que é utilizada no backend ou do frontend, do banco de dados, ou seja, para o GraphQL não importa nada disso, ele não funciona especificamente em uma linguagem, em uma tecnologia. O GraphQL é um conjunto de padrões para comunicar o Frontend com o Backend de uma maneira diferente da maneira convencional quando é feito chamadas API utilizando o padrão RESTfull.

  • Quais problemas o GraphQL resolve?
    • Overfetching(buscar informações demais)

      • http://localhost:3000/users
        • DB (usuários, endereços)
      • Se em algum momento eu precisar fazer uma listagem de usuários sem o endereço, eu faço uma chamada para a rota de users só que a rota vai me retornar os endereços, só que eu não preciso deles, ou seja, ela tá com Overfetching, eu estou buscando mais do que eu preciso do backend.
    • Underfetching(buscar informações de menos)

      • http://localhost:3000/users
        • DB (usuários)
      • http://localhost:3000/addresses
      • Se em agum momento no Frontend tem uma página que precisa tanto de usuários quanto de endereços desses usuários, se a rota de usuários não retornou todos os dados que eu precisava, isso foi um Underfetching, eu fiz uma chamada para o backend e não me devolveu todos os dados que eu precisava.

Quando fazemos uma chamada para o backend utilizando padrão REST, é feita uma chamada para a rota users por exemplo e essa rota determina quais dados vão ser retornados, ou seja, o backend tem toda a responsabilidade por dizer para o frontend exatamente quais são os dados que vão ser retornados.

Quando utilizamos o GraphQL quem diz quais dados são necessários do backend é o front não o back, o backend vai falar simplesmente para o front: eu tenho toda essa vastidão de dados aqui disponíveis, usuários, endereços, o que você quer? Ou seja, em uma chamada HTTP eu consigo buscar todos os dados que eu preciso do backend.

  • Dificuldades:
    • Trabalhar com cache é muito mais difícil no GraphQL do que com o REST, porque com REST os próprios browsers já estão padronizados para fazer o cache das requisições.

    • Errors: os erros que o backend retorna é mais difícil de tratar esses erros, fazer a manipulação desses erros com GraphQL. Todas as chamadas HTTP sempre retornam código 200, ou seja, é um código de "sucesso" para o browser.

Dentro do GraphQL existe o schema first e o code first.

O Schema first é escrito o schema antes e depois o código é escrito. No code first o código é escrito primeiro e ele mesmo se encarrega de criar o schema.

🚀 Tecnologias/Bibliotecas utilizadas

TypeScript React Node.js GraphQL

💻 Autor

Feito com 💜 by Rodrigo Rael

Linkedin Rodrigo Gmail Rodrigo

You might also like...

Web3 Framework, 0% Backend, 10000% Frontend

██████ ██ ████ █████ ██ ██ ██ ██ ██ ██ ██████ ██ ██ ██ ██ ██ STACK ██ ██ ██ ██ ██ ██ Network Without ██ ██ ████ █████

Dec 9, 2022

Repositorio común Backend-Frontend del equipo DevPanda

Instalaciones importantes: Nodejs Nodejs creará el entorno en el cuál React y Express van a ejecutarse. Se recomienda la version estable. Es una insta

May 11, 2022

Learn how to set up Supabase auth for both the frontend and backend of your application using a JWT - JSON web token.

Learn how to set up Supabase auth for both the frontend and backend of your application using a JWT - JSON web token.

Supabase auth, frontend + backend - example with Next.js Learn how to set up Supabase auth for both the frontend and backend of your application using

Nov 20, 2022

sistema de bate ponto para os aprendizes da brisa, usando Angular no frontend, golang no backend e postgresql como banco.

Migule Points Este projeto tem o intuito de automatizar a frequência dos aprendizes da brisanet, usando Angular no front, Golang no backend e postgres

Sep 26, 2022

A transpiler from golang's type to typescript's type for collaboration between frontend & backend.

A transpiler from golang's type to typescript's type for collaboration between frontend & backend.

go2type go2type.vercel.app (backup site) A typescript transpiler that convert golang's type to typescript's type. Help front-end developer to work fas

Sep 26, 2022

O objetivo dessa aplicação era criar um frontend feito totalmente em Javascript, sem nenhum arquivo HTML ou CSS pré-criado. Além disso, esse projeto também é o frontend da minha API 100% NodeJS.

O objetivo dessa aplicação era criar um frontend feito totalmente em Javascript, sem nenhum arquivo HTML ou CSS pré-criado. Além disso, esse projeto também é o frontend da minha API 100% NodeJS.

Projeto HTML 100% Javascript Front-end feito "sem HTML" Conteúdos ➜ Sobre o projeto ➜ O que aprendi ➜ Como usar 🔎 Sobre o projeto Voltar ao topo O ob

Aug 3, 2021

The backend for our Airbnb App, built using Sanity.io.

AirBnb Sanity.io Backend This repository is to support my tutorial on how to build an AirBnb Clone with strucutred content using Sanity.io and Next.js

Dec 28, 2022

Wikipedia using only static assets & no backend

Wikipedia using only static assets & no backend

http://static.wiki Build a read-only Wikipedia using CSS, JS, WASM, and SQLite A proof-of-concept inspired and enabled by Hosting SQLite Databases on

Jan 1, 2023

This is an application that entered the market with a mobile application in real life. We wrote the backend side with node.js and the mobile side with flutter.

HAUSE TAXI API Get Started Must be installed on your computer Git Node Firebase Database Config You should read this easy documentation Firebase-Fires

Nov 4, 2021
Owner
Rodrigo Rael
Apaixonado por tecnologia, procurando novos desafios e focando nas áreas do back-end, front-end e do mobile com JavaScript, TypeScript, ReactJs, React-Native.
Rodrigo Rael
Aprendendo a testar Aplicações Javascript

Aprendendo a testar Aplicações Javascript Testes no ecossistema Javascript. Simples libs utilitárias, passando por uma API REST e finalmente chegando

William Koller 6 Mar 1, 2022
Gatsby-Formik-contact-form-with-backend-panel - Full working contact form with backend GUI panel.

Gatsby minimal starter ?? Quick start Create a Gatsby site. Use the Gatsby CLI to create a new site, specifying the minimal starter. # create a new Ga

Bart 1 Jan 2, 2022
Venni backend - The backend of the Venni client apps implementing the credit card payments, matching algorithms, bank transfers, trip rating system, and more.

Cloud Functions Description This repository contains the cloud functions used in the Firebase backend of the Venni apps. Local Development Setup For t

Abrantes 1 Jan 3, 2022
radiQL, your one-stop-shop for migrating from a legacy REST backend to an efficient and modern GraphQL API

Welcome to radiQL, the one-stop solution for setting up GraphQL on a PostgreSQL database. Check out our Medium article here. At A Glance: Give us your

OSLabs Beta 90 Nov 14, 2022
NextJS with GraphQL using type-graphl and graphql-codegen adoptable dogs example code

This is a Next.js project bootstrapped with create-next-app. Getting Started First, run the development server: npm run dev # or yarn dev Open http://

Jack Herrington 2 Mar 31, 2022
GraphQL-first boilerplate that scales with TypeScript + Node Express + Apollo GraphQL APIs.

graphql-typescript-boilerplate A boilerplate project for quickly building Graphql APIs and with typescript ?? Installation Install the dependencies: y

Youssef Hajjari 6 May 15, 2022
next-graphql-server is a library for building production-grade GraphQL servers using Next.js with API Routes

next-graphql-server next-graphql-server is an easy to use Next.js library for creating performant GraphQL endpoints on top of Next.js API Routes. Star

Jakub Neander 82 Nov 21, 2022
GraphQL Hive provides all the tools the get visibility of your GraphQL architecture at all stages, from standalone APIs to composed schemas (Federation, Stitching)

GraphQL Hive GraphQL Hive provides all the tools the get visibility of your GraphQL architecture at all stages, from standalone APIs to composed schem

Kamil Kisiela 184 Dec 21, 2022
Web based application that uses playerctl in it backend to control remotely your audio using the frontend as remote control.

Linux Remote This is a web based application that uses playerctl in it backend to control remotely your audio using the frontend as remote control. Do

Gabriel Guerra 4 Jul 6, 2022