em 2012 e aberta ao público em 2015 (graphql.org). Trata-se de uma linguagem de consulta para APIs e um runtime para preencher essas consultas com seus dados.
Seus aplicativos faziam diversas requisições na API para renderizar cada tela. • Flexibilidade: Diversos aplicativos sendo criados, uma série demandas de API diferentes. Introdução
das relações entre os recursos, economizando requisições ao servidor, sem a necessidade de definir novos recursos contendo o set de campos que você precisa no momento.
você tiver uma árvore e quiser retornar um ramo sem saber a profundidade, você terá que fazer algum tipo de paginação. Consulta em profundidade indefinida Pontos Negativos
corresponde ao formato da consulta, portanto, se você precisar responder em uma estrutura muito específica, você terá que adicionar uma camada de transformação para remodelar a resposta.
que o GraphQL é usado em APIs (POST em um único endpoint), o cache à nível de rede torna-se difícil. Uma maneira de resolver é usar persisted / static queries.
gigante. Seu backend sofrerá para responder. • Maximum Depth: Bloqueia consultas que excedem a profundidade máxima pré-definida. • Cost Analysis: Bloqueia consultas que excedem o custo máximo de execução. O custo máximo é uma soma do custo definido para cada campo. • Persisted / Static Queries: Executa somente consultas pré-aprovadas; O Facebook parece estar usando essa estratégia (bit.ly/gql-gn-face). Queries complexas Pontos Negativos • Imprevisibilidade da execução
tem a oportunidade de optimizar as consultas SQL, melhorando a performance e vitando N+1. • Facebook DataLoader: Ajuda a carregar dados de várias fontes, como bancos de dados ou serviços da Web, faz batch e cache (github.com/facebook/dataloader). • GraphQL::Batch: Um executor em batches para a gem graphql (github.com/Shopify/graphql-batch). Optimização de SQL; N+1 Pontos Negativos • Imprevisibilidade da execução
acesso pode ser extremamente perigoso, dado que um usuário da API poderia navegar pelo schema todo sem restrição nenhuma. • graphql-guard: Esta gem fornece autorização à nível de field para a gem graphql-ruby (github.com/exAspArk/graphql-guard). • GraphQL::Pro: Versão PRO da gem graphql-ruby, fornece recursos de autorização à nível de field e mais algumas coisas (graphql.pro). Segurança Pontos Negativos • Imprevisibilidade da execução
simples, o GraphQL somente adicionará complexidade desnecessária, então uma simples API REST pode resolver o seu problema. • Responder um JSON é muito simples. • Em muitas linguagem o JSON já vem built-in. • GraphQL é uma dependência a mais. APIs super simples Pontos Negativos
a execução dos BPMNs das nossas réguas de comunicação. E o que raios é um BPMN? Business Process Model and Notation (Notação de Modelagem de Processos de Negócio) é uma série de ícones padrões para o desenho de processos. Nosso caso de uso Nosso Caso de Uso