SlideShare uma empresa Scribd logo
Integrando sua App ao Mundo via
REST/JSON
Mário Guedes – jmarioguedes@gmail.com
Mário?
• Gerente de Desenvolvimento na Contact Studio Software
• Estamos contratando!
• http://www.g4solutions.com.br/trabalhe-conosco/
• Desenvolvedor Delphi, Python, JS e noSQL
• 15+ anos na lida
• Filho de Valdete e Joselito
• Irmão do Manoel, da Jenny e do Jonhy
• Pai do Júlio e da Fernanda
• E noivo da Tamires
Iniciando
• REST: Estilo arquitetural criado por Roy Fielding
• RESTful: Design de adoção que respeita os conceitos REST
• REST API: Dados e funções de negócios expostos via web para outras aplicações consumirem
• JSON: Representação de Objetos JavaScript
• Formato em texto simples e auto descritivo
• Permite encadeamento de dados
• Permite intercâmbio de informação entre paltaformas heterogêneas (Delphi X Python por exemplo)
• Menos verboso que o XML
• Criado por Douglas Crockford
• http://json.org/json-pt.html
HTTP – Protocolo de Transferência de Hipertexto
• Entendendo o HTTP entenderemos o REST
• Baseado em texto: Simplicidade
• Orientado à documento
• Modelo de Requisição e Resposta: Síncrono
• Possui uma ação, um endereçamento, um cabeçalho e
talvez um conteúdo
URL: Recurso a ser trabalho
• A URL identifica o recurso a ser trabalhado.
• Não importa o que será feito com o recurso, a URL será a mesma.
• O Verbo HTTP é que determinará o que será feito.
• As partes de uma URL determinam uma hierarquia em relação ao recurso.
• Para consumir um servidor DataSnap/REST usamos URL por justaposição.
Interface uniforme
• A ação a ser executada sobre um recurso é determinado
pelo verbo HTTP.
• Os quatro verbos principais equivalem às operações
CRUD.
Verbo Ação
Create POST Cria um novo recurso
Read GET Recupera um determinado recurso ou lista de recursos
Update PUT Atualiza um determinado recurso ou cria se inexistente
Delete DELETE Elimina um determinado recurso
Principais Status HTTP
• 200 – OK: A solicitação foi processada com sucesso!
• 201 – CREATED: A solicitação de criação de um recurso (POST) foi executada com sucesso!
• 202 – ACCEPTED: A solicitação de execução de uma tarefa assíncrona foi enfileirada com sucesso!
• 304 – NOT MODIFIED: O conteúdo armazenado em cache pela aplicação cliente é válida!
• 400 – BAD REQUEST: A solicitação possui algum erro por parte da aplicação cliente.
• 401 – UNAUTHORIZED: O usuário não pode executar a operação desejada.
• 404 – NOT FOUND: Clássico! O recurso solicitado não existe.
• 500 – INTERNAL SERVER ERROR: Ocorreu um erro na camada servidora.
JSON – Notação de Objeto JavaScript
• Um recurso deve ser representado de alguma forma.
• Mas como podemos representar um vendedor ou uma empresa?
• Precisamos de uma estrutura complexa.
• Poderia ser XML, INI, CSV, YAML... Mas a indústria adotou o JSON.
• Legibilidade!
• Maior compactação resulta em maior vazão.
• Aderência ao JavaScript: A linguagem frontend web.
Paleta REST Client
• TRESTClient: Responsável pela configuração de acesso à um
serviço RESTful.
• TRESTRequest: Responsável pela requisição de um recurso
específico.
• TRESTResponse: Responsável pela decodificação da resposta.
• HTTPS: http://indy.fulgan.com/SSL/
JSON é simples!
• A unit System.JSON possui várias classes para lidar com o
JSON no Delphi.
API REST
• Grandes serviços web possuem uma REST API.
• É um conjunto de URLs e representações JSON bem documentadas.
• Facebook, Twitter, Google, LinkedIn, Uber, Spotify, Netflix, Instagram, Amazon,
GitHub, RedTube e provavelmente o seu serviço web preferido possuiu APIs
REST.
• Deve-se ler a documentação e ficar atento aos termos de uso. Em geral há uma
área no site para desenvolvedores.
• E o seu sistema pode entrar neste time: DataSnap/REST.
Exemplo prático - Suas músicas do Spotify
• https://developer.spotify.com/web-api/endpoint-reference/
• OAuth 2.0
• Vamos listar nossos álbuns e playlists
• Vamos adicionar uma nova playlist ao nosso usuário
Para saber mais
• REST & JSON, Chega de Dúvidas!
Rodrigo Mourão
https://youtu.be/k7J_FJWiFu8?t=15m:45s
• Integração de Serviços Cloud com REST/JSON
Fernando Rizzato
https://youtu.be/azFARYrYKR4
• Tudo sobre o REST Client Library
Mário Guedes
https://youtu.be/ajl2GEJonQA
@ jmarioguedes@gmail.com
/jmarioguedes
/jmarioguedes
@ mario.guedes@contactstudio.com

Mais conteúdo relacionado

Mais procurados

Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
MarceloRosenbrock1
 
Service Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices ArchitectureService Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices Architecture
PLUMgrid
 
What I learnt: Elastic search & Kibana : introduction, installtion & configur...
What I learnt: Elastic search & Kibana : introduction, installtion & configur...What I learnt: Elastic search & Kibana : introduction, installtion & configur...
What I learnt: Elastic search & Kibana : introduction, installtion & configur...
Rahul K Chauhan
 
Introduction to Apache Solr
Introduction to Apache SolrIntroduction to Apache Solr
Introduction to Apache Solr
Christos Manios
 
Deep Dive on PostgreSQL Databases on Amazon RDS (DAT324) - AWS re:Invent 2018
Deep Dive on PostgreSQL Databases on Amazon RDS (DAT324) - AWS re:Invent 2018Deep Dive on PostgreSQL Databases on Amazon RDS (DAT324) - AWS re:Invent 2018
Deep Dive on PostgreSQL Databases on Amazon RDS (DAT324) - AWS re:Invent 2018
Amazon Web Services
 
High Concurrency Architecture and Laravel Performance Tuning
High Concurrency Architecture and Laravel Performance TuningHigh Concurrency Architecture and Laravel Performance Tuning
High Concurrency Architecture and Laravel Performance Tuning
Albert Chen
 
A tour of Amazon Redshift
A tour of Amazon RedshiftA tour of Amazon Redshift
A tour of Amazon Redshift
Kel Graham
 
Presto: Optimizing Performance of SQL-on-Anything Engine
Presto: Optimizing Performance of SQL-on-Anything EnginePresto: Optimizing Performance of SQL-on-Anything Engine
Presto: Optimizing Performance of SQL-on-Anything Engine
DataWorks Summit
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
Ricardo Peres
 
Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...
Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...
Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...
Chris Richardson
 
Migrating Oracle database to Cassandra
Migrating Oracle database to CassandraMigrating Oracle database to Cassandra
Migrating Oracle database to Cassandra
Umair Mansoob
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
Tchelinux
 
SeaweedFS introduction
SeaweedFS introductionSeaweedFS introduction
SeaweedFS introduction
chrislusf
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)
Eunjeong (Lucy) Park
 
Time Series Analysis with Spark by Sandy Ryza
Time Series Analysis with Spark by Sandy RyzaTime Series Analysis with Spark by Sandy Ryza
Time Series Analysis with Spark by Sandy Ryza
Spark Summit
 
VoltDB 소개
VoltDB 소개VoltDB 소개
VoltDB 소개
Linux Foundation Korea
 
Inside MongoDB: the Internals of an Open-Source Database
Inside MongoDB: the Internals of an Open-Source DatabaseInside MongoDB: the Internals of an Open-Source Database
Inside MongoDB: the Internals of an Open-Source Database
Mike Dirolf
 
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid RahimianAPI Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
Vahid Rahimian
 
Apache Flink Adoption @ Shopify
Apache Flink Adoption @ ShopifyApache Flink Adoption @ Shopify
Apache Flink Adoption @ Shopify
KevinLam737856
 
Concevoir une bibliothèque numérique avec Omeka
Concevoir une bibliothèque numérique avec OmekaConcevoir une bibliothèque numérique avec Omeka
Concevoir une bibliothèque numérique avec Omeka
Julien Sicot
 

Mais procurados (20)

Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
 
Service Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices ArchitectureService Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices Architecture
 
What I learnt: Elastic search & Kibana : introduction, installtion & configur...
What I learnt: Elastic search & Kibana : introduction, installtion & configur...What I learnt: Elastic search & Kibana : introduction, installtion & configur...
What I learnt: Elastic search & Kibana : introduction, installtion & configur...
 
Introduction to Apache Solr
Introduction to Apache SolrIntroduction to Apache Solr
Introduction to Apache Solr
 
Deep Dive on PostgreSQL Databases on Amazon RDS (DAT324) - AWS re:Invent 2018
Deep Dive on PostgreSQL Databases on Amazon RDS (DAT324) - AWS re:Invent 2018Deep Dive on PostgreSQL Databases on Amazon RDS (DAT324) - AWS re:Invent 2018
Deep Dive on PostgreSQL Databases on Amazon RDS (DAT324) - AWS re:Invent 2018
 
High Concurrency Architecture and Laravel Performance Tuning
High Concurrency Architecture and Laravel Performance TuningHigh Concurrency Architecture and Laravel Performance Tuning
High Concurrency Architecture and Laravel Performance Tuning
 
A tour of Amazon Redshift
A tour of Amazon RedshiftA tour of Amazon Redshift
A tour of Amazon Redshift
 
Presto: Optimizing Performance of SQL-on-Anything Engine
Presto: Optimizing Performance of SQL-on-Anything EnginePresto: Optimizing Performance of SQL-on-Anything Engine
Presto: Optimizing Performance of SQL-on-Anything Engine
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...
Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...
Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...
 
Migrating Oracle database to Cassandra
Migrating Oracle database to CassandraMigrating Oracle database to Cassandra
Migrating Oracle database to Cassandra
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
SeaweedFS introduction
SeaweedFS introductionSeaweedFS introduction
SeaweedFS introduction
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)
 
Time Series Analysis with Spark by Sandy Ryza
Time Series Analysis with Spark by Sandy RyzaTime Series Analysis with Spark by Sandy Ryza
Time Series Analysis with Spark by Sandy Ryza
 
VoltDB 소개
VoltDB 소개VoltDB 소개
VoltDB 소개
 
Inside MongoDB: the Internals of an Open-Source Database
Inside MongoDB: the Internals of an Open-Source DatabaseInside MongoDB: the Internals of an Open-Source Database
Inside MongoDB: the Internals of an Open-Source Database
 
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid RahimianAPI Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
 
Apache Flink Adoption @ Shopify
Apache Flink Adoption @ ShopifyApache Flink Adoption @ Shopify
Apache Flink Adoption @ Shopify
 
Concevoir une bibliothèque numérique avec Omeka
Concevoir une bibliothèque numérique avec OmekaConcevoir une bibliothèque numérique avec Omeka
Concevoir une bibliothèque numérique avec Omeka
 

Destaque

Eva diagnostica 2
Eva diagnostica 2Eva diagnostica 2
Eva diagnostica 2
Thaly Hoyos
 
Valores docentes
Valores docentesValores docentes
Valores docentes
Mario Cordero
 
Elópez relación hardware y software
Elópez relación hardware y softwareElópez relación hardware y software
Elópez relación hardware y software
Emmanuel Lopez
 
Prototipagem
PrototipagemPrototipagem
Prototipagem
Carlos Arruda
 
Big data da teoria à prática
Big data  da teoria à práticaBig data  da teoria à prática
Big data da teoria à prática
Mario Guedes
 
Operationalising digital tax: Three things you need to do now
Operationalising digital tax: Three things you need to do now Operationalising digital tax: Three things you need to do now
Operationalising digital tax: Three things you need to do now
Intuit Inc.
 
Angela Frucci Portfolio
Angela Frucci PortfolioAngela Frucci Portfolio
Angela Frucci Portfolio
Angela Frucci
 
Marketing your firm – Key foundations you’ve got to get right
Marketing your firm – Key foundations you’ve got to get rightMarketing your firm – Key foundations you’ve got to get right
Marketing your firm – Key foundations you’ve got to get right
Intuit Inc.
 
Sistemasoperativos juarezbermudez
Sistemasoperativos juarezbermudezSistemasoperativos juarezbermudez
Sistemasoperativos juarezbermudez
alan juarez bermudez
 
Valuaciones
ValuacionesValuaciones

Destaque (10)

Eva diagnostica 2
Eva diagnostica 2Eva diagnostica 2
Eva diagnostica 2
 
Valores docentes
Valores docentesValores docentes
Valores docentes
 
Elópez relación hardware y software
Elópez relación hardware y softwareElópez relación hardware y software
Elópez relación hardware y software
 
Prototipagem
PrototipagemPrototipagem
Prototipagem
 
Big data da teoria à prática
Big data  da teoria à práticaBig data  da teoria à prática
Big data da teoria à prática
 
Operationalising digital tax: Three things you need to do now
Operationalising digital tax: Three things you need to do now Operationalising digital tax: Three things you need to do now
Operationalising digital tax: Three things you need to do now
 
Angela Frucci Portfolio
Angela Frucci PortfolioAngela Frucci Portfolio
Angela Frucci Portfolio
 
Marketing your firm – Key foundations you’ve got to get right
Marketing your firm – Key foundations you’ve got to get rightMarketing your firm – Key foundations you’ve got to get right
Marketing your firm – Key foundations you’ve got to get right
 
Sistemasoperativos juarezbermudez
Sistemasoperativos juarezbermudezSistemasoperativos juarezbermudez
Sistemasoperativos juarezbermudez
 
Valuaciones
ValuacionesValuaciones
Valuaciones
 

Semelhante a Integrando sua App ao Mundo via REST/JSON

Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
Mario Guedes
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o REST
ArrayOf.io
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o REST
Mario Guedes
 
Rest
RestRest
Rest
JugVale
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
Fabricio Carvalho
 
REST and JEE
REST and JEEREST and JEE
REST and JEE
Rafael Nunes
 
Monitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixMonitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com Zabbix
André Déo
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
Luis Vendrame
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performance
José Roberto Araújo
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web API
Vinicius Mussak
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
Luan Felipe Knebel
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
Ambiente Livre
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
Marcio Junior Vieira
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
BrunoAlbuquerque864673
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIs
Heider Lopes
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
Heider Lopes
 
REST com Python
REST com PythonREST com Python
REST com Python
fabiocerqueira
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
BrunoAlbuquerque864673
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
Alvaro Viebrantz
 
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
Igor Santos
 

Semelhante a Integrando sua App ao Mundo via REST/JSON (20)

Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o REST
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o REST
 
Rest
RestRest
Rest
 
Web Sphere
Web SphereWeb Sphere
Web Sphere
 
REST and JEE
REST and JEEREST and JEE
REST and JEE
 
Monitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixMonitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com Zabbix
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performance
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web API
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIs
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
 
REST com Python
REST com PythonREST com Python
REST com Python
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
 

Mais de Mario Guedes

O que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitO que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST Summit
Mario Guedes
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDIS
Mario Guedes
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da Ethereum
Mario Guedes
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - Cookbook
Mario Guedes
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
Mario Guedes
 
Foco no app, viva o serverless!
Foco no app, viva o serverless!Foco no app, viva o serverless!
Foco no app, viva o serverless!
Mario Guedes
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
Mario Guedes
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Mario Guedes
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis
Mario Guedes
 
Escalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisEscalando o backend com NGINX e Redis
Escalando o backend com NGINX e Redis
Mario Guedes
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!
Mario Guedes
 
Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?
Mario Guedes
 
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiTDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
Mario Guedes
 
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Mario Guedes
 
Extreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiExtreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe Delphi
Mario Guedes
 
Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?
Mario Guedes
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistema
Mario Guedes
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Mario Guedes
 
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosExtreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Mario Guedes
 
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBArquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Mario Guedes
 

Mais de Mario Guedes (20)

O que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitO que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST Summit
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDIS
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da Ethereum
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - Cookbook
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
Foco no app, viva o serverless!
Foco no app, viva o serverless!Foco no app, viva o serverless!
Foco no app, viva o serverless!
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis
 
Escalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisEscalando o backend com NGINX e Redis
Escalando o backend com NGINX e Redis
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!
 
Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?
 
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiTDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
 
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
 
Extreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiExtreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe Delphi
 
Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistema
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
 
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosExtreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
 
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBArquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
 

Integrando sua App ao Mundo via REST/JSON

  • 1.
  • 2. Integrando sua App ao Mundo via REST/JSON Mário Guedes – jmarioguedes@gmail.com
  • 3. Mário? • Gerente de Desenvolvimento na Contact Studio Software • Estamos contratando! • http://www.g4solutions.com.br/trabalhe-conosco/ • Desenvolvedor Delphi, Python, JS e noSQL • 15+ anos na lida • Filho de Valdete e Joselito • Irmão do Manoel, da Jenny e do Jonhy • Pai do Júlio e da Fernanda • E noivo da Tamires
  • 4. Iniciando • REST: Estilo arquitetural criado por Roy Fielding • RESTful: Design de adoção que respeita os conceitos REST • REST API: Dados e funções de negócios expostos via web para outras aplicações consumirem • JSON: Representação de Objetos JavaScript • Formato em texto simples e auto descritivo • Permite encadeamento de dados • Permite intercâmbio de informação entre paltaformas heterogêneas (Delphi X Python por exemplo) • Menos verboso que o XML • Criado por Douglas Crockford • http://json.org/json-pt.html
  • 5. HTTP – Protocolo de Transferência de Hipertexto • Entendendo o HTTP entenderemos o REST • Baseado em texto: Simplicidade • Orientado à documento • Modelo de Requisição e Resposta: Síncrono • Possui uma ação, um endereçamento, um cabeçalho e talvez um conteúdo
  • 6. URL: Recurso a ser trabalho • A URL identifica o recurso a ser trabalhado. • Não importa o que será feito com o recurso, a URL será a mesma. • O Verbo HTTP é que determinará o que será feito. • As partes de uma URL determinam uma hierarquia em relação ao recurso. • Para consumir um servidor DataSnap/REST usamos URL por justaposição.
  • 7. Interface uniforme • A ação a ser executada sobre um recurso é determinado pelo verbo HTTP. • Os quatro verbos principais equivalem às operações CRUD. Verbo Ação Create POST Cria um novo recurso Read GET Recupera um determinado recurso ou lista de recursos Update PUT Atualiza um determinado recurso ou cria se inexistente Delete DELETE Elimina um determinado recurso
  • 8. Principais Status HTTP • 200 – OK: A solicitação foi processada com sucesso! • 201 – CREATED: A solicitação de criação de um recurso (POST) foi executada com sucesso! • 202 – ACCEPTED: A solicitação de execução de uma tarefa assíncrona foi enfileirada com sucesso! • 304 – NOT MODIFIED: O conteúdo armazenado em cache pela aplicação cliente é válida! • 400 – BAD REQUEST: A solicitação possui algum erro por parte da aplicação cliente. • 401 – UNAUTHORIZED: O usuário não pode executar a operação desejada. • 404 – NOT FOUND: Clássico! O recurso solicitado não existe. • 500 – INTERNAL SERVER ERROR: Ocorreu um erro na camada servidora.
  • 9. JSON – Notação de Objeto JavaScript • Um recurso deve ser representado de alguma forma. • Mas como podemos representar um vendedor ou uma empresa? • Precisamos de uma estrutura complexa. • Poderia ser XML, INI, CSV, YAML... Mas a indústria adotou o JSON. • Legibilidade! • Maior compactação resulta em maior vazão. • Aderência ao JavaScript: A linguagem frontend web.
  • 10. Paleta REST Client • TRESTClient: Responsável pela configuração de acesso à um serviço RESTful. • TRESTRequest: Responsável pela requisição de um recurso específico. • TRESTResponse: Responsável pela decodificação da resposta. • HTTPS: http://indy.fulgan.com/SSL/
  • 11. JSON é simples! • A unit System.JSON possui várias classes para lidar com o JSON no Delphi.
  • 12. API REST • Grandes serviços web possuem uma REST API. • É um conjunto de URLs e representações JSON bem documentadas. • Facebook, Twitter, Google, LinkedIn, Uber, Spotify, Netflix, Instagram, Amazon, GitHub, RedTube e provavelmente o seu serviço web preferido possuiu APIs REST. • Deve-se ler a documentação e ficar atento aos termos de uso. Em geral há uma área no site para desenvolvedores. • E o seu sistema pode entrar neste time: DataSnap/REST.
  • 13. Exemplo prático - Suas músicas do Spotify • https://developer.spotify.com/web-api/endpoint-reference/ • OAuth 2.0 • Vamos listar nossos álbuns e playlists • Vamos adicionar uma nova playlist ao nosso usuário
  • 14. Para saber mais • REST & JSON, Chega de Dúvidas! Rodrigo Mourão https://youtu.be/k7J_FJWiFu8?t=15m:45s • Integração de Serviços Cloud com REST/JSON Fernando Rizzato https://youtu.be/azFARYrYKR4 • Tudo sobre o REST Client Library Mário Guedes https://youtu.be/ajl2GEJonQA