SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

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 serviceMVP Microsoft
 
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 MarvinDaniel Takabayashi, MSc
 
Reunião 02 PASS Chapter MCITPSC
Reunião 02 PASS Chapter MCITPSCReunião 02 PASS Chapter MCITPSC
Reunião 02 PASS Chapter MCITPSCRodrigo Dornel
 
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.NETLetticia Nicoli
 
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 21Gustavo Fonseca
 
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 PortuguesaRobson Agapito Correa
 
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 WebdriverRobson Agapito Correa
 
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)Robson Agapito Correa
 
Decoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e ReactDecoupled Drupal com GraphQL e React
Decoupled Drupal com GraphQL e ReactCleber Gasparoto
 

Mais procurados (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
 

Semelhante a Introducao ao GraphQL

Utilizando graphQL em projetos .Net
Utilizando graphQL em projetos .NetUtilizando graphQL em projetos .Net
Utilizando graphQL em projetos .NetMVP Microsoft
 
Uma jornada de dados com R
Uma jornada de dados com RUma jornada de dados com R
Uma jornada de dados com REduardo Klein
 
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-2018Renato Groff
 
Eduardo Rocha - Criando produtos invisíveis
Eduardo Rocha - Criando produtos invisíveis   Eduardo Rocha - Criando produtos invisíveis
Eduardo Rocha - Criando produtos invisíveis Agile Trends
 
GraphQL na GetNinjas (2017-09-20)
GraphQL na GetNinjas (2017-09-20)GraphQL na GetNinjas (2017-09-20)
GraphQL na GetNinjas (2017-09-20)Bruno Soares
 
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/2018Raul Oliveira
 
GraphQL na Era das APIs
GraphQL na Era das APIsGraphQL na Era das APIs
GraphQL na Era das APIsDaniel Varanda
 
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-2017Renato Groff
 
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)Fernando Henriques
 
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 APIsFernando Henriques
 
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, ...tdc-globalcode
 
Rails API com GraphQL
Rails API com GraphQLRails API com GraphQL
Rails API com GraphQLSergio Lima
 
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 PlatformAndré Paulovich
 
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 ...Renato Groff
 
Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)Fabrício Catae
 
Mobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para NegociosMobile Ria Para Aplicacoes Para Negocios
Mobile Ria Para Aplicacoes Para NegociosRodney Repullo
 
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 InsightsRenato Groff
 
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 significativosAmbiente Livre
 
Palestra ferramentas de administraao sgbd
Palestra   ferramentas de administraao sgbdPalestra   ferramentas de administraao sgbd
Palestra ferramentas de administraao sgbdDiego Rivera Tavares
 

Semelhante a 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
 

Mais de MVP Microsoft

TypeScript + Node.js + cosmos db
TypeScript + Node.js + cosmos dbTypeScript + Node.js + cosmos db
TypeScript + Node.js + cosmos dbMVP Microsoft
 
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 UnityMVP Microsoft
 
Novidades do TypeScript para desenvolvedores Angular
Novidades do TypeScript para desenvolvedores AngularNovidades do TypeScript para desenvolvedores Angular
Novidades do TypeScript para desenvolvedores AngularMVP Microsoft
 
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 UnityMVP Microsoft
 
Mackenzie - TypeScript
Mackenzie - TypeScript Mackenzie - TypeScript
Mackenzie - TypeScript MVP Microsoft
 
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 MVP Microsoft
 
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 bandeirantesMVP Microsoft
 
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 dockerMVP Microsoft
 
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 bandeirantesMVP Microsoft
 
Angular lazy loading
Angular  lazy loadingAngular  lazy loading
Angular lazy loadingMVP Microsoft
 
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 MVP Microsoft
 
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 AzureMVP Microsoft
 
Angular + jwt + .net core
Angular + jwt + .net core Angular + jwt + .net core
Angular + jwt + .net core MVP Microsoft
 

Mais de 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