Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução ao GraphQL - Uma nova forma de criar...

Introdução ao GraphQL - Uma nova forma de criar APIs (com Ruby)

Palestra realizada no meetup da comunidade RubyOnRio em 04/06/2019.

Avatar for Fernando Henriques

Fernando Henriques

June 04, 2019
Tweet

More Decks by Fernando Henriques

Other Decks in Programming

Transcript

  1. Fernando Henriques • Desenvolvedor 10+ anos • Senior Full Stack

    Developer • JavaScript, Ruby, PHP e Java • Front-end 3000 github.com/fernandohenriques
  2. Nova forma de criar APIs? Foi criada em 2012 e

    lançada publicamente em 2015, mas...
  3. GraphQL ➔ Criada pelo Facebook ➔ Open-source ➔ Linguagem de

    consulta de dados ➔ Não é um protocolo para APIs, mas funcionando como um ➔ Agnóstico: independe de linguagem ou banco de dados ➔ É uma spec! Protocolo para APIs ?
  4. Quem solicita decide o que quer receber (somente o que

    precisa) Essa é a premissa básica, motivo de sua criação
  5. No REST não é assim Em uma API REST é

    preciso criar um novo endpoint para receber uma resposta com estrutura de dados diferente
  6. • Representational State Transfer • Verbos HTTP (GET, POST, PUT,

    DELETE, HEAD…) • Resource based URLs - Endpoint (/movie/10) • RESTful: capacidade de determinado sistema aplicar os conceitos REST REST (ful) API
  7. ★ Baixo custo de mudança ★ Mais poder para o

    front-end Duas grandes vantagens do GraphQL
  8. 1. Single endpoint 2. Well defined contract (tem schema, é

    tipado - o REST é schemaless, não tem contrato) 3. No more overfetching 4. No more underfetching (vários endpoints para uma feature) Conceitos fundamentais do GraphQL
  9. • Documentação: auto-documentação através do Schema ◦ Chamada de introspection

    retorna o Schema • Legibilidade da API: sem “salada” de URLs • Menos tráfego de dados no cliente: payload menor • Tempo de desenvolvimento do back-end focado em regras de negócio e qualidade, e não em “ajudar” o front-end Problemas comuns que o GraphQL resolve
  10. Int: A signed 32‐bit integer Float: A signed double-precision floating-point

    value String: A UTF‐8 character sequence Boolean: True ou false ID: Unique identifier (não legível para humanos) Tipos primitivos Tipos e schema Enum, custom scalar, listas e non-null
  11. ★ Sobrecarga de responsabilidades no front-end funciona para todos os

    times e projetos? ★ Nada impede o dev de escrever (é até fácil) uma query com potencial destrutivo para sua app (ex.: sem paginação) ★ Ainda precisa evoluir/padronizar os processos de autorização de acesso GraphQL não é bala de prata