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

GraphQL na prática

GraphQL na prática

Avatar for Felipe Marino

Felipe Marino

March 28, 2019

Other Decks in Programming

Transcript

  1. Show of hands Quem aqui: • Já ouviu sobre GraphQL?

    • Já usou GraphQL? • Já usou GraphQL com Swift?
  2. O que é? • Padrão de API criado pelo Facebook

    • Linguagem de query para API'’s - !banco de dados • Organizado por tipos e campos • Endpoint único - POST • Declarativo
  3. • Desempenho • Orquestrador que consome várias API's • Flexibilidade

    aos clients • Colaborativo Por que escolhemos o GraphQL?
  4. Queries • leitura de dados query { propertyList { properties

    { title, neighborhood, likes, price } } }
  5. • leitura de dados • definição das propriedades query {

    propertyList { properties { title, price } } } Queries
  6. Query query { propertyList { properties { title, price }

    } } { "data": { "propertyList": { "properties": [ { "title": "Apartamento bonitão", "price": 500000 }, ... ] } } } Response
  7. Mutations • update de dados • também pode retornar dados

    atualizados, mensagens ou erros específicos mutation { likeProperty(id: 0) { success, message } }
  8. Mutations mutation { likeProperty(id: 0) { success, message } }

    { "data": { "likeProperty": { "success": true, "message": "The property amount of likes was correctly updated!" } } } Response
  9. • Type safe • Primitivos (Int, Float, Bool, Strings) •

    required | optional • Custom scalar - Date • Interfaces (protocolos) Dados e tipos
  10. • Protocolo de comunicação com os clients • Definição de

    tipos, queries e mutations disponíveis • schema.json - clientes Schema
  11. App • Lista de imóveis disponíveis + • Contatos de

    interessados • Em REST: 1. Dois endpoints - /properties e /contacts 2. Comunicação com backend para alterar o retorno do endpoint
  12. Apollo iOS • Networking • Cache - In memory /

    SQLite • Gera type safe structs • Codegen - valida o que digitamos
  13. Mapeamento do schema • graphql-cli • No setup inicial e

    sempre que houver alterações, ou novas queries e mutations expostas
  14. Desvantagens • Não suporta multipart file uploads - PR parado

    • Dependências + suporte • Normalização entre tipos • Curva de aprendizagem
  15. Vantagens • SOAP < RESTful < GraphQL - nova era?

    • !(parsear JSON) - repetitivo • Democrático - Fácil de todo time contribuir - schema, playground • Decisão e flexibilidade na mão dos clients • Redução de gasto de banda • Depreciação de atributos - aparece nos docs e no client • Stub é simples
  16. Conteúdo e referências • Projeto de exemplo - App +

    Server • Awesome Graphql - lista de conteúdo • grapqhl.org • apollo-ios