Vous êtes sur la page 1sur 5

Eve Porcello e Alex Banks

Novatec
Authorized Portuguese translation of the English edition of Learning GraphQL ISBN 9781492030713 © 2018
Alex Banks and Eve Porcello. This translation is published and sold by permission of O'Reilly Media, Inc., which
owns or controls all rights to sell the same.
Tradução em português autorizada da edição em inglês da obra da Learning GraphQL ISBN 9781492030713
© 2018 Alex Banks and Eve Porcello. Esta tradução é publicada e vendida com a permissão da O'Reilly Media,
Inc., que detém ou controla todos os direitos para publicação e venda desta obra.
Copyright © 2018 da Novatec Editora Ltda.
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra,
mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora.
Editor: Rubens Prates MP20180917
Tradução: Lúcia A. Kinoshita
Revisão gramatical: Smirna Cavalheiro
Editoração eletrônica: Carolina Kuwabata

ISBN: 978-85-7522-703-9
Histórico de impressões:
Setembro/2018 Primeira edição
Novatec Editora Ltda.
Rua Luís Antônio dos Santos 110
02460-000 – São Paulo, SP – Brasil
Tel.: +55 11 2959-6529
Email: novatec@novatec.com.br
Site: www.novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec
Sumário

Prefácio................................................................................................................................... 9

Capítulo 1 ■ Bem-vindo ao GraphQL.........................................................................................12


O que é GraphQL?............................................................................................................13
Especificação GraphQL...............................................................................................15
Princípios de design do GraphQL................................................................................ 16
Origens do GraphQL........................................................................................................ 17
História do transporte de dados........................................................................................ 18
Remote Procedure Call (RPC)..................................................................................... 18
Simple Object Access Protocol (SOAP)........................................................................ 18
REST.......................................................................................................................... 18
Desvantagens do REST.....................................................................................................20
Overfetching...............................................................................................................20
Underfetching.............................................................................................................22
Administrando endpoints REST.................................................................................. 24
GraphQL no mundo real...................................................................................................25
Clientes GraphQL.......................................................................................................26

Capítulo 2 ■ Teoria dos grafos..................................................................................................27


Vocabulário da teoria dos grafos.......................................................................................30
História da teoria dos grafos............................................................................................. 33
Árvores e grafos................................................................................................................36
Grafos no mundo real....................................................................................................... 39

Capítulo 3 ■ A linguagem de consulta GraphQL.........................................................................43


Ferramentas para APIs GraphQL...................................................................................... 45
GraphiQL...................................................................................................................46
GraphQL Playground..................................................................................................48
API GraphQL públicas................................................................................................50
A consulta GraphQL.........................................................................................................50
Arestas e conexões......................................................................................................54
Fragmentos................................................................................................................. 56

5
6 Introdução ao GraphQL

Mutações.........................................................................................................................63
Usando variáveis de consulta.......................................................................................64
Subscriptions....................................................................................................................65
Introspecção.....................................................................................................................67
Árvores sintáticas abstratas............................................................................................... 69

Capítulo 4 ■ Design de um esquema........................................................................................71


Definindo tipos................................................................................................................72
Tipos..........................................................................................................................72
Tipos escalares............................................................................................................73
Enumerados................................................................................................................ 74
Conexões e listas.............................................................................................................. 75
Conexões de um para um............................................................................................ 76
Conexões de um para muitos......................................................................................77
Conexões de muitos para muitos................................................................................. 79
Lista de tipos diferentes............................................................................................... 81
Argumentos.....................................................................................................................84
Filtrando dados...........................................................................................................86
Mutações.........................................................................................................................89
Tipos input....................................................................................................................... 91
Tipo de retorno................................................................................................................ 95
Subscriptions....................................................................................................................96
Documentação dos esquemas...........................................................................................98

Capítulo 5 ■ Criando uma API GraphQL...................................................................................101


Configuração do projeto................................................................................................. 102
Resolvers........................................................................................................................ 102
Resolvers raiz............................................................................................................ 105
Resolvers de tipo....................................................................................................... 107
Usando entradas e enumerados................................................................................. 111
Arestas e conexões.................................................................................................... 113
Escalares personalizados........................................................................................... 119
apollo-server-express...................................................................................................... 123
Contexto........................................................................................................................ 126
Instalando o Mongo.................................................................................................. 127
Adicionando um banco de dados no contexto............................................................ 127
Autorização do GitHub................................................................................................... 130
Configurando o OAuth do GitHub............................................................................ 130
Processo de autorização............................................................................................ 132
Mutação githubAuth ................................................................................................ 134
Autenticando usuários.............................................................................................. 138
Conclusão...................................................................................................................... 145
Sumário 7

Capítulo 6 ■ Clientes GraphQL................................................................................................146


Usando uma API GraphQL............................................................................................. 146
Requisições fetch...................................................................................................... 146
graphql-request......................................................................................................... 148
Apollo Client.................................................................................................................. 152
Apollo Client com o React.............................................................................................. 153
Configuração do projeto............................................................................................ 153
Configuração do Apollo Client.................................................................................. 153
O componente Query................................................................................................ 156
Componente Mutation.............................................................................................. 161
Autorização.................................................................................................................... 162
Autorizando o usuário.............................................................................................. 163
Identificando o usuário............................................................................................. 168
Trabalhando com cache.................................................................................................. 170
Políticas de busca...................................................................................................... 170
Persistência do cache................................................................................................. 171
Atualizando o cache.................................................................................................. 173

Capítulo 7 ■ GraphQL no mundo real......................................................................................177


Subscriptions.................................................................................................................. 178
Trabalhando com subscriptions................................................................................. 178
Consumindo subscriptions........................................................................................ 185
Upload de arquivos......................................................................................................... 190
Tratando uploads no servidor.................................................................................... 190
Postando uma nova foto com o Apollo Client............................................................. 192
Segurança......................................................................................................................200
Timeout de requisições.............................................................................................200
Limitações nos dados................................................................................................ 201
Limitando a profundidade da consulta...................................................................... 202
Limitando a complexidade das consultas................................................................... 205
Apollo Engine........................................................................................................... 207
Próximos passos............................................................................................................. 209
Migração gradual...................................................................................................... 209
A estratégia de desenvolvimento Schema-First........................................................... 210
Eventos associados ao GraphQL................................................................................ 213
Comunidade............................................................................................................. 213
Canais Slack da comunidade..................................................................................... 215

Vous aimerez peut-être aussi