SlideShare a Scribd company logo
1 of 33
Introdução ao GraphQL
Microsoft (MVP)
Thiago da Silva Adriano
Developer Squad Onboarding
Autor Técnico e Palestrante
Organizador dos meetups
/perfil/thiagoadriano
programadrianotadriano.net
programadriano
programadriano
Contatos
Blogs
/pt-br/microsofttech/author/thiagoadriano/
Contatos
Agenda
▸ Introdução ao GraphQL
▸ Exemplo prático
Introdução ao GraphQL
{ }
Banco de dados relacional?
Banco de dados NoSQL?
{ }
...?
Então…?
GraphQL is an open-source data query and
manipulation language for APIs, and a
runtime for fulfilling queries with existing
data. GraphQL was developed internally by
Facebook in 2012 before being publicly
released in 2015
Wikipedia
GraphQL
Problema Solução
Projetos frontend
Duvídas?
RestFul Api’s
REST
API
Cloud-Based
Services
Application
Servers Data
Legacy
Applications
Web
Applications
Mobile
Applications
Partner
Applications
Cloud
Resources
RestFul Api’s - Problemas
● Tráfego de dados desnecessários
● Muitas rotas para atender todos os cenários (get news, get products...etc)
● Versionamento de API
8
Tráfego de dados desnecessários
Tráfego de dados desnecessários
Muitas rotas
https://apieventos.band.uol.com.br/rolandgarros/v1/matches?date=2018-05-27&modality=SM&page=1&perPage=10
https://apieventos.band.uol.com.br/rolandgarros/v2/matches?date=2019-05-31&modality=SM&page=1&perPage=10
Versionamento de API´s
https://myserver.com/resource-name?param1=value1&param2=value2&param3=value3
REST API GraphQL API
Multiple Request to Fetch Data Single Request to Fetch Data
Data Data
DB-1
DB-2
DB-3
Clients GraphQL API GraphQL API
● Schemas: Base de uma implementação GraphQL
● Types: Mapeamento entre as nossas Models (Modelos)
● Query: GET/GETByID
● Mutations: POST/PUT/DELETE
Conceitos
Model Type
Exemplo Prático
mutation ($produto: produtoInput!) {
addProduto(produto: $produto) {
codigoBarras,
nome,
preco
}
}
{
"produto":{
"codigoBarras": "151333115321531s3",
"nome": "Produto novo",
"preco": 200.0
}
}
Inserindo dados
Atualizando dados
mutation ($produto: produtoInput!) {
updateProduto(produto: $produto) {
codigoBarras,
nome,
preco
}
}
{
"produto":{
"codigoBarras": "11111111111",
"nome": "Produto atualizado",
"preco": 200.0
}
}
Deletando dados
mutation ($codigoBarras: ID!) {
deleteProduto(codigoBarras:
$codigoBarras)
}
{
"codigoBarras": "11111111111"
}
.NET Core + GraphQL: https://github.com/programadriano/ASPNETCore2_CRUD-API-JWT-EFInMemory-GraphQL
Duvídas?
Obrigado
@programadriano

More Related Content

What's hot

SciELO e a interoperabilidade, no século 21
SciELO e a interoperabilidade, no século 21SciELO e a interoperabilidade, no século 21
SciELO e a interoperabilidade, no século 21
SciELO - Scientific Electronic Library Online
 

What's hot (10)

Vs code + node + angular + azure app service
Vs code + node + angular + azure app serviceVs code + node + angular + azure app service
Vs code + node + angular + azure app service
 
Da Exploração à Produção - Inteligência Artificial com a plataforma Marvin
Da Exploração à Produção - Inteligência Artificial com a plataforma MarvinDa Exploração à Produção - Inteligência Artificial com a plataforma Marvin
Da Exploração à Produção - Inteligência Artificial com a plataforma Marvin
 
SciELO e a interoperabilidade, no século 21
SciELO e a interoperabilidade, no século 21SciELO e a interoperabilidade, no século 21
SciELO e a interoperabilidade, no século 21
 
Reunião 02 PASS Chapter MCITPSC
Reunião 02 PASS Chapter MCITPSCReunião 02 PASS Chapter MCITPSC
Reunião 02 PASS Chapter MCITPSC
 
Machine Learning para devs com ML.NET
Machine Learning para devs com ML.NETMachine Learning para devs com ML.NET
Machine Learning para devs com ML.NET
 
SciELO e a interoperabilidade, no século 21
SciELO e a interoperabilidade, no século 21SciELO e a interoperabilidade, no século 21
SciELO e a interoperabilidade, no século 21
 
A aventura de um Agile Tester em uma empresa Waterfall Portuguesa
A aventura de um Agile Tester em uma empresa Waterfall PortuguesaA aventura de um Agile Tester em uma empresa Waterfall Portuguesa
A aventura de um Agile Tester em uma empresa Waterfall Portuguesa
 
Python com qualidade - testes funcionais com Python e Selenium Webdriver
Python com qualidade - testes funcionais com Python e Selenium WebdriverPython com qualidade - testes funcionais com Python e Selenium Webdriver
Python com qualidade - testes funcionais com Python e Selenium Webdriver
 
Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)
 
Decoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e ReactDecoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e React
 

Similar to Introducao ao GraphQL

Similar to Introducao ao GraphQL (20)

Utilizando graphQL em projetos .Net
Utilizando graphQL em projetos .NetUtilizando graphQL em projetos .Net
Utilizando graphQL em projetos .Net
 
Uma jornada de dados com R
Uma jornada de dados com RUma jornada de dados com R
Uma jornada de dados com R
 
Azure para Desenvolvedores - Azure Brasil - Março-2018
Azure para Desenvolvedores - Azure Brasil - Março-2018Azure para Desenvolvedores - Azure Brasil - Março-2018
Azure para Desenvolvedores - Azure Brasil - Março-2018
 
Eduardo Rocha - Criando produtos invisíveis
Eduardo Rocha - Criando produtos invisíveis   Eduardo Rocha - Criando produtos invisíveis
Eduardo Rocha - Criando produtos invisíveis
 
GraphQL na GetNinjas (2017-09-20)
GraphQL na GetNinjas (2017-09-20)GraphQL na GetNinjas (2017-09-20)
GraphQL na GetNinjas (2017-09-20)
 
Cenário das Plataformas de Dados 2017/2018
Cenário das Plataformas de Dados 2017/2018Cenário das Plataformas de Dados 2017/2018
Cenário das Plataformas de Dados 2017/2018
 
GraphQL na Era das APIs
GraphQL na Era das APIsGraphQL na Era das APIs
GraphQL na Era das APIs
 
Nuvem, IoT, Big Data… para onde estamos indo? - Etec Sales - Novembro-2017
Nuvem, IoT, Big Data… para onde estamos indo? - Etec Sales - Novembro-2017Nuvem, IoT, Big Data… para onde estamos indo? - Etec Sales - Novembro-2017
Nuvem, IoT, Big Data… para onde estamos indo? - Etec Sales - Novembro-2017
 
Introdução ao GraphQL - Uma nova forma de criar APIs (Ruby)
Introdução ao GraphQL - Uma nova forma de criar APIs (Ruby)Introdução ao GraphQL - Uma nova forma de criar APIs (Ruby)
Introdução ao GraphQL - Uma nova forma de criar APIs (Ruby)
 
Minha Vida Fiap - Desenvolvimento
Minha Vida Fiap - DesenvolvimentoMinha Vida Fiap - Desenvolvimento
Minha Vida Fiap - Desenvolvimento
 
Introdução ao GraphQL - Uma nova forma de criar APIs
Introdução ao GraphQL - Uma nova forma de criar APIsIntrodução ao GraphQL - Uma nova forma de criar APIs
Introdução ao GraphQL - Uma nova forma de criar APIs
 
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
 
Rails API com GraphQL
Rails API com GraphQLRails API com GraphQL
Rails API com GraphQL
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
 
Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)
 
Mobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para NegociosMobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para Negocios
 
Monitorando serviços REST com o Application Insights
Monitorando serviços REST com o Application InsightsMonitorando serviços REST com o Application Insights
Monitorando serviços REST com o Application Insights
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativos
 
Palestra ferramentas de administraao sgbd
Palestra   ferramentas de administraao sgbdPalestra   ferramentas de administraao sgbd
Palestra ferramentas de administraao sgbd
 

More from MVP Microsoft

More from MVP Microsoft (20)

Resiliencia em APIs
Resiliencia em APIsResiliencia em APIs
Resiliencia em APIs
 
TypeScript + Node.js + cosmos db
TypeScript + Node.js + cosmos dbTypeScript + Node.js + cosmos db
TypeScript + Node.js + cosmos db
 
Desenvolvimento de games com C# e Unity
Desenvolvimento de games com C# e UnityDesenvolvimento de games com C# e Unity
Desenvolvimento de games com C# e Unity
 
Novidades do TypeScript para desenvolvedores Angular
Novidades do TypeScript para desenvolvedores AngularNovidades do TypeScript para desenvolvedores Angular
Novidades do TypeScript para desenvolvedores Angular
 
7 masters
7 masters7 masters
7 masters
 
TypeScript 3.4
TypeScript 3.4 TypeScript 3.4
TypeScript 3.4
 
Xamarim + api
Xamarim + apiXamarim + api
Xamarim + api
 
Desenvolvendo games de realidade virtual com C# utilizando o Unity
Desenvolvendo games de realidade virtual com C# utilizando o UnityDesenvolvendo games de realidade virtual com C# utilizando o Unity
Desenvolvendo games de realidade virtual com C# utilizando o Unity
 
Mackenzie - TypeScript
Mackenzie - TypeScript Mackenzie - TypeScript
Mackenzie - TypeScript
 
Angular + asp.net core + docker na nuvem
Angular + asp.net core + docker na nuvem Angular + asp.net core + docker na nuvem
Angular + asp.net core + docker na nuvem
 
Xamarin + node.js
Xamarin + node.jsXamarin + node.js
Xamarin + node.js
 
Erros e acertos com angular na tv bandeirantes
Erros e acertos com angular na tv bandeirantesErros e acertos com angular na tv bandeirantes
Erros e acertos com angular na tv bandeirantes
 
Ai fest 2018
Ai fest 2018Ai fest 2018
Ai fest 2018
 
Fc nuvem azure node, mongo db, redis e docker
Fc nuvem azure  node, mongo db, redis e dockerFc nuvem azure  node, mongo db, redis e docker
Fc nuvem azure node, mongo db, redis e docker
 
Bots no mundo real o case da tv bandeirantes
Bots no mundo real  o case da tv bandeirantesBots no mundo real  o case da tv bandeirantes
Bots no mundo real o case da tv bandeirantes
 
Angular lazy loading
Angular  lazy loadingAngular  lazy loading
Angular lazy loading
 
Criando games em c# utilizando o unity
Criando games em c# utilizando o unity Criando games em c# utilizando o unity
Criando games em c# utilizando o unity
 
Angular SSR com .NET Core no Azure
Angular SSR com .NET Core no AzureAngular SSR com .NET Core no Azure
Angular SSR com .NET Core no Azure
 
Angular + jwt + .net core
Angular + jwt + .net core Angular + jwt + .net core
Angular + jwt + .net core
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 

Introducao ao GraphQL