SlideShare una empresa de Scribd logo
1 de 32
Mário Guedes 
Conhecendo o Novo REST Framework
Um novo momento: nuvem 
• Estamos vivendo uma nova era: soluções in cloud. 
• O usuário final quer a informação onde ele, o usuário, está. 
• Os clients agora são Desktop, Web e Mobile! Em Windows, Mac, 
Linux, Android, iOS, Windows Phone ... 
• Não se esqueça da Internet das Coisas: Tecnologia Vestível, 
Drone, Automação Residencial, e por ai vai. 
• Temos o maior banco de dados do mundo ao nosso dispor: a 
grande web e o BIG DATA com os seus “Vs” 
• Volume 
• Velocidade 
• Variedade
Web Humana X Web Programável 
• Essencialmente existem duas webs. 
• A “web humana”, feita para ser consumida pelas pessoas. 
• Se preocupa tanto com a apresentação quanto com a 
informação. 
• E a “web programável”, feita para ser consumida por 
softwares. 
• Tem foco apenas na informação. 
• Nada a ver com a Deep Web: isto é outra coisa.
Momento mão na massa: #ECon2014 
• Um exemplo extremo é o consumo da Streming API do 
Twitter. 
• A Streaming API esta fora do escopo desta apresentação 
pois envolve uma outra tecnologia: o WebSocket, 
comunicação persistente e bidirecional. 
• Imagine acompanhar em tempo real os twittes de uma 
determinada hashtag. 
• Este é o momento em que você pega o seu celular e twitta 
algo assim: “#ECon2014 clRed Delphi XE7 – o melhor!”
Protocolo de Transporte e de Comunicação 
• Protocolo: é uma convenção, ou seja, um conjunto de 
regras bem estabelecidas, que torna possível a 
comunicação entre duas partes. 
• Vamos falar muito de HTTP. E o TCP/IP? Onde fica? 
• A verdade é que são coisas distintas: 
• TCP/IP: É um protocolo de transporte entre dois equipamentos 
• HTTP: É um protocolo de comunicação entre dois softwares 
• Uma mensagem HTTP trafega via TCP/IP entre um 
equipamento e outro.
HTTP – Protocolo de Transferência de Hipertexto 
• Baseado em texto: simplicidade. 
• Orientado à documento: o objetivo primário é o de 
recuperar um documento de um servidor remoto. 
• Fundamentado no modelo de Requisição e Reposta: 
Síncrono 
• Hipertexto é um texto com referência a outros textos. 
• Surgiu junto com o HTML, nos anos 90. 
• HTML: Linguagem de marcação de hipertexto
Pense no HTTP como um envelope de vai e vem 
• Uma mensagem HTTP tem um remetente e um 
destinatário. 
• E talvez um conteúdo. 
• Durante o tráfego a mensagem passa por diversos 
softwares e hardwares, como o proxy da sua empresa. 
• Então o cabeçalho HTTP possui diversas informações para 
que os softwares envolvidos tomem as melhores decisões.
Regras gerais do protocolo HTTP 
• Uma mensagem HTTP possui três partes bem distintas: 
1 – Cabeçalho HTTP 
2 - Quebra de linha 
indicando o fim do 
cabeçalho 
3 – Conteúdo da mensagem, 
se houver
Requisição HTTP 
• O cabeçalho HTTP de uma requisição possui o seguinte 
formato: 
1 – Verbo HTTP 
2 – Caminho do 
recurso 
3 – Versão do 
protocolo HTTP 
4 – Pares de chave e valor 
com informações relevantes
Resposta HTTP 
• Já o cabeçalho de uma resposta HTTP possui o seguinte 
formato: 
1 – Versão do 
protocolo HTTP 
2 – Status de retorno 
do processamento 
3 – Mensagem de 
retorno do servidor 
4 – Pares de chave e 
valor com informações 
relevantes 
5 – Conteúdo da 
resposta
Alguns cabeçalhos que se destacam 
• Content-Type: Indica o tipo de conteúdo que esta sendo trafegado. 
• Content-Length: Indica o tamanho em bytes do conteúdo que esta sendo 
trafegado. 
• Accept: Indica o tipo de conteúdo que o cliente aceita. 
• Authorization: Contêm as credenciais do usuário solicitante. 
• User-Agent: Indica o nome e versão do software cliente. 
• Server: Indica o nome e versão do software servidor. 
• Cache-Control: Indica se pode ou não armazenar o conteúdo em cache.
Momento mão na massa: recuperando a cotação do 
dólar de um jeito ruim  
• O maior banco de dados do mundo é a web. 
• Podemos programar robôs para rastrear sites, fazer 
cotações automáticas, e por ai vai. 
• Isto é um web crawler. 
• Vamos estudar um que monitora o site www.dolarhoje.com 
e recupera a cotação do dolár. 
• Funciona, mas a um custo computacional muito alto e 
temos que torcer para que não mudem o leiaute da 
página.
SOA – Arquitetura Orientada à Serviços 
• Abordagem extremamente eficiente para a otimização 
dos recursos de TI de uma empresa. 
• Promove a desvinculação entre as regras de negócio e 
modelos específicos como: 
• Linguagens de desenvolvimento 
• Sistemas operacionais 
• Sistema de banco de dados e por ai vai. 
• Interoperabilidade! 
• O SOAP é o maior exemplo desta abordagem. 
• NFe, quem nunca né? 
Consumidor & Provedor 
CONSUMIDOR COMUNICAÇÃO PROVEDOR 
• Consumidor: Estrutura de software que promove a 
visualização das informações bem como a interação com o 
usuário final. 
• Provedor: Estrutura de software que provê funcionalidades 
de domínio de negócios: As regras. 
• Comunicação: Para duas partes distintas se comunicarem é 
necessário haver um meio e um protocolo suportado por 
ambas.
ROA – Arquitetura Orientada à Recursos 
• ROA é o modo de resolver um problema com um serviço 
web REST. A abstração em relação ao SOA diminui. 
• Agora estamos colocando o REST em evidência e a forma 
como ele funciona é fortemente aderente ao HTTP. 
• O conteúdo que trafega entre uma ponta e outra é um 
recurso. 
• Evolvabilidade: capacidade de evoluir e se adaptar.
REST – Transferência de Estado Representacional 
• “Um sistema complexo que funciona é, invariavelmente, 
considerado como evoluído a partir de um simples que 
funcionava” - John Gall 
• Grosso modo, “o mesmo gênio que inventou o 
HTTP inventou o REST”: Tim Berners-Lee 
• Obviamente existem diversas outras mentes brilhantes 
neste processo. 
• Um servidor REST não guarda estado, cada nó da cadeia: 
• recebe  modifica  repassa o estado de um recurso. 
• Isso se reflete em ESCALABILIDADE!
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
URL? URI? 
• Tanto faz. 
• Na literatura aparecem os dois, alternadamente. 
• A URL, de um modo geral, identifica um recurso disponível 
na rede. 
[protocolo]://[usuário]:[senha]@[servidor]:[porta]/[caminho]/[recurso] 
URI Identificador Padrão de Recurso 
URL Localizador Padrão de Recursos 
URN Nome Padrão de Recurso
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.
Passagem de parâmetros 
• No que concerne ao REST a passagem de parâmetros deve se 
dar via URL. 
• Após a identificação do recurso virá o sinal de ? seguido por 
pares de <chave>=<valor> 
• Os parâmetros são separados pelo & 
• Espaço pode ser representado por + 
• Caracteres especiais são codificados de acordo com a sua 
representação UNICODE/UTF8 no formato hexadecimal, após 
o sinal %: Ç  199  C7  %C7
Oi? 
/usuario/mario.guedes 
GET 
(recupera) 
PUT 
(insere) 
POST 
(edita) 
DELETE 
(elimina) 
GET 
(recupera listagem) 
/usuario?inicio=20&limite=10
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 aplicação 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.
JSON é simples! 
• A unit System.JSON possui várias classes para lidar com o 
JSON no Delphi.
Caramba! Tenho que fazer tudo isso para consumir 
um serviço REST? 
• Resposta curta: Não! 
• Resposta longa: O Delphi XE7 traz consigo um conjunto de 
componentes que encapsula todas as dificuldades que 
discutimos até aqui. 
• Ufa! 
• Menos código na hora de 
consumir um servidor REST! 
• O namespace REST.* possui várias facilidades para lidar 
com toda esta complexidade que falamos até aqui.
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/
REST API 
• Grandes serviços web possuem uma REST API. 
• É um conjunto de URLs e representações JSON bem 
documentadas. 
• Facebook, Twitter, Produtos Google, LinkedIN, Spotyfi, 
Netflix, Instagram, Amazon, GitHub, 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.
Momento mão na massa: Recuperando os 
aniversários dos seus amigos do Facebook! 
• Vamos usar os componentes da paleta REST Client para 
listarmos os nosso amigos do Facebook. 
• Agora que já entendemos como funciona os conceitos de 
HTTP e REST fica mais simples de entender a “mágica”. 
• Para isso temos que usar a API REST do Facebook. 
• https://developers.facebook.com/
Dá tempo para perguntas? 
• Muito obrigado pelo privilégio da sua audiência!  
• Os exemplos poderão ser encontrados em: 
https://github.com/jmarioguedes/EC2014_REST.git
Referências 
• http://pt.wikipedia.org/wiki/Hypertext_Transfer_Protocol 
• Livro: REST: Construa API's inteligentes de maneira simples 
http://www.casadocodigo.com.br/products/livro-rest 
Alexandre Saudate 
Veja se este código de desconto está válido: PARCEIRO-4tfc3687 
• Livro: RESTful Serviços Web 
http://www.altabooks.com.br/restful-servicos-web.html 
Leonard Richardson e Sam Ruby 
• Como um verdadeiro sistema REST funciona: arquitetura e desempenho 
na Abril 
http://www.infoq.com/br/presentations/rest-arquitetura-abril 
Luis Cipriani
HTTP/1.1 200 OK 
Content-Length: 544 
{ 
“nome” : “Mário Guedes” , 
“e-mail” : “mario.guedes@arrayof.com.br” , 
“blog” : “http://eugostododelphi.blogspot.com.br” , 
“perfis” : [ 
{“twitter” : “eugostododelphi”} , 
{“facebook” : “eugostododelphi”} , 
{“linkedin” : “jmarioguedes”} , 
{“slideshare” : “jmarioguedes”} , 
{“github” : “jmarioguedes”} , 
{“prezi” : “jmarioguedes”} 
] 
}

Más contenido relacionado

La actualidad más candente

Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming LibraryMario Guedes
 
Entendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPAdler Medrado
 
Migrando 4 milhões de linhas de Delphi 7 para XE7
Migrando 4 milhões de linhas de Delphi 7 para XE7Migrando 4 milhões de linhas de Delphi 7 para XE7
Migrando 4 milhões de linhas de Delphi 7 para XE7José Araújo
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIMario 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
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.Filipe Morelli
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Desenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDesenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDomingos Teruel
 
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCCriando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCFlávio Lisboa
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros PassosJackson F. de A. Mafra
 
Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Diego Rosa
 
Zend Framework em Exemplos
Zend Framework em ExemplosZend Framework em Exemplos
Zend Framework em Exemplosxbacon
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPArthur Fücher
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPAdler Medrado
 
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 RedisMario Guedes
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introduçãoPablo Feijó
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsRafael Soares
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 

La actualidad más candente (20)

Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming Library
 
Entendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHPEntendendo Conceitos Caching com PHP
Entendendo Conceitos Caching com PHP
 
Migrando 4 milhões de linhas de Delphi 7 para XE7
Migrando 4 milhões de linhas de Delphi 7 para XE7Migrando 4 milhões de linhas de Delphi 7 para XE7
Migrando 4 milhões de linhas de Delphi 7 para XE7
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
 
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?
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Desenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend FrameworkDesenvolvendo Aplicações com Zend Framework
Desenvolvendo Aplicações com Zend Framework
 
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISCCriando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
Criando Aplicações PHP Poderosas com Zend Framework 2 - 8º SOLISC
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout  Tempo Real Eventos - Nodejs - Os Primeiros PassosHangout  Tempo Real Eventos - Nodejs - Os Primeiros Passos
Hangout Tempo Real Eventos - Nodejs - Os Primeiros Passos
 
Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014
 
Zend Framework em Exemplos
Zend Framework em ExemplosZend Framework em Exemplos
Zend Framework em Exemplos
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SP
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHP
 
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
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introdução
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 

Similar a Conhecendo as principais tecnologias para consumo de APIs RESTful

Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?Luis Vendrame
 
TÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdf
TÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdfTÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdf
TÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdfLeandrovilela19
 
Minicurso - Banco de Dados NoSQL com .Net Core
Minicurso - Banco de Dados NoSQL com .Net CoreMinicurso - Banco de Dados NoSQL com .Net Core
Minicurso - Banco de Dados NoSQL com .Net CoreBruno Roldão
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a InternetLeonardo Soares
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdfRubenManhia
 
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 EELuan Felipe Knebel
 
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 ZabbixAndré Déo
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTMario Guedes
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTArrayOf.io
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceJosé Roberto Araújo
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIAlvaro Viebrantz
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSPledsifes
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioFernando Palma
 
JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5Helder da Rocha
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFlávio Lisboa
 

Similar a Conhecendo as principais tecnologias para consumo de APIs RESTful (20)

Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
Aplicações web parte 1
Aplicações web parte 1Aplicações web parte 1
Aplicações web parte 1
 
TÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdf
TÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdfTÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdf
TÓPICOS AVANÇADOS EMENG. DE COMPUTAÇÃO II 2 semana.pdf
 
Minicurso - Banco de Dados NoSQL com .Net Core
Minicurso - Banco de Dados NoSQL com .Net CoreMinicurso - Banco de Dados NoSQL com .Net Core
Minicurso - Banco de Dados NoSQL com .Net Core
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
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
 
Cliente Servidor
Cliente ServidorCliente Servidor
Cliente Servidor
 
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
 
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
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performance
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Ebook Apache Server: Guia Introdutório
Ebook Apache Server: Guia IntrodutórioEbook Apache Server: Guia Introdutório
Ebook Apache Server: Guia Introdutório
 
JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5
 
FISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHPFISL12. Web Services e Computação em Nuvem com PHP
FISL12. Web Services e Computação em Nuvem com PHP
 
Web service
Web serviceWeb service
Web service
 

Más 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 SummitMario 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 REDISMario Guedes
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumMario Guedes
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - CookbookMario 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 MapsMario 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 MapsMario 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
 
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
 
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 DelphiMario 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 DelphiMario 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 sistemaMario 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áriosMario Guedes
 
Abertura - GruPy-SP | G4 Solutions - Agosto 2015
Abertura - GruPy-SP | G4 Solutions - Agosto 2015Abertura - GruPy-SP | G4 Solutions - Agosto 2015
Abertura - GruPy-SP | G4 Solutions - Agosto 2015Mario Guedes
 
O que é ser programador?
O que é ser programador?O que é ser programador?
O que é ser programador?Mario Guedes
 

Más de Mario Guedes (19)

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
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!
 
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
 
Abertura - GruPy-SP | G4 Solutions - Agosto 2015
Abertura - GruPy-SP | G4 Solutions - Agosto 2015Abertura - GruPy-SP | G4 Solutions - Agosto 2015
Abertura - GruPy-SP | G4 Solutions - Agosto 2015
 
O que é ser programador?
O que é ser programador?O que é ser programador?
O que é ser programador?
 

Conhecendo as principais tecnologias para consumo de APIs RESTful

  • 1.
  • 2. Mário Guedes Conhecendo o Novo REST Framework
  • 3. Um novo momento: nuvem • Estamos vivendo uma nova era: soluções in cloud. • O usuário final quer a informação onde ele, o usuário, está. • Os clients agora são Desktop, Web e Mobile! Em Windows, Mac, Linux, Android, iOS, Windows Phone ... • Não se esqueça da Internet das Coisas: Tecnologia Vestível, Drone, Automação Residencial, e por ai vai. • Temos o maior banco de dados do mundo ao nosso dispor: a grande web e o BIG DATA com os seus “Vs” • Volume • Velocidade • Variedade
  • 4. Web Humana X Web Programável • Essencialmente existem duas webs. • A “web humana”, feita para ser consumida pelas pessoas. • Se preocupa tanto com a apresentação quanto com a informação. • E a “web programável”, feita para ser consumida por softwares. • Tem foco apenas na informação. • Nada a ver com a Deep Web: isto é outra coisa.
  • 5. Momento mão na massa: #ECon2014 • Um exemplo extremo é o consumo da Streming API do Twitter. • A Streaming API esta fora do escopo desta apresentação pois envolve uma outra tecnologia: o WebSocket, comunicação persistente e bidirecional. • Imagine acompanhar em tempo real os twittes de uma determinada hashtag. • Este é o momento em que você pega o seu celular e twitta algo assim: “#ECon2014 clRed Delphi XE7 – o melhor!”
  • 6. Protocolo de Transporte e de Comunicação • Protocolo: é uma convenção, ou seja, um conjunto de regras bem estabelecidas, que torna possível a comunicação entre duas partes. • Vamos falar muito de HTTP. E o TCP/IP? Onde fica? • A verdade é que são coisas distintas: • TCP/IP: É um protocolo de transporte entre dois equipamentos • HTTP: É um protocolo de comunicação entre dois softwares • Uma mensagem HTTP trafega via TCP/IP entre um equipamento e outro.
  • 7. HTTP – Protocolo de Transferência de Hipertexto • Baseado em texto: simplicidade. • Orientado à documento: o objetivo primário é o de recuperar um documento de um servidor remoto. • Fundamentado no modelo de Requisição e Reposta: Síncrono • Hipertexto é um texto com referência a outros textos. • Surgiu junto com o HTML, nos anos 90. • HTML: Linguagem de marcação de hipertexto
  • 8. Pense no HTTP como um envelope de vai e vem • Uma mensagem HTTP tem um remetente e um destinatário. • E talvez um conteúdo. • Durante o tráfego a mensagem passa por diversos softwares e hardwares, como o proxy da sua empresa. • Então o cabeçalho HTTP possui diversas informações para que os softwares envolvidos tomem as melhores decisões.
  • 9. Regras gerais do protocolo HTTP • Uma mensagem HTTP possui três partes bem distintas: 1 – Cabeçalho HTTP 2 - Quebra de linha indicando o fim do cabeçalho 3 – Conteúdo da mensagem, se houver
  • 10. Requisição HTTP • O cabeçalho HTTP de uma requisição possui o seguinte formato: 1 – Verbo HTTP 2 – Caminho do recurso 3 – Versão do protocolo HTTP 4 – Pares de chave e valor com informações relevantes
  • 11. Resposta HTTP • Já o cabeçalho de uma resposta HTTP possui o seguinte formato: 1 – Versão do protocolo HTTP 2 – Status de retorno do processamento 3 – Mensagem de retorno do servidor 4 – Pares de chave e valor com informações relevantes 5 – Conteúdo da resposta
  • 12. Alguns cabeçalhos que se destacam • Content-Type: Indica o tipo de conteúdo que esta sendo trafegado. • Content-Length: Indica o tamanho em bytes do conteúdo que esta sendo trafegado. • Accept: Indica o tipo de conteúdo que o cliente aceita. • Authorization: Contêm as credenciais do usuário solicitante. • User-Agent: Indica o nome e versão do software cliente. • Server: Indica o nome e versão do software servidor. • Cache-Control: Indica se pode ou não armazenar o conteúdo em cache.
  • 13. Momento mão na massa: recuperando a cotação do dólar de um jeito ruim  • O maior banco de dados do mundo é a web. • Podemos programar robôs para rastrear sites, fazer cotações automáticas, e por ai vai. • Isto é um web crawler. • Vamos estudar um que monitora o site www.dolarhoje.com e recupera a cotação do dolár. • Funciona, mas a um custo computacional muito alto e temos que torcer para que não mudem o leiaute da página.
  • 14. SOA – Arquitetura Orientada à Serviços • Abordagem extremamente eficiente para a otimização dos recursos de TI de uma empresa. • Promove a desvinculação entre as regras de negócio e modelos específicos como: • Linguagens de desenvolvimento • Sistemas operacionais • Sistema de banco de dados e por ai vai. • Interoperabilidade! • O SOAP é o maior exemplo desta abordagem. • NFe, quem nunca né? 
  • 15. Consumidor & Provedor CONSUMIDOR COMUNICAÇÃO PROVEDOR • Consumidor: Estrutura de software que promove a visualização das informações bem como a interação com o usuário final. • Provedor: Estrutura de software que provê funcionalidades de domínio de negócios: As regras. • Comunicação: Para duas partes distintas se comunicarem é necessário haver um meio e um protocolo suportado por ambas.
  • 16. ROA – Arquitetura Orientada à Recursos • ROA é o modo de resolver um problema com um serviço web REST. A abstração em relação ao SOA diminui. • Agora estamos colocando o REST em evidência e a forma como ele funciona é fortemente aderente ao HTTP. • O conteúdo que trafega entre uma ponta e outra é um recurso. • Evolvabilidade: capacidade de evoluir e se adaptar.
  • 17. REST – Transferência de Estado Representacional • “Um sistema complexo que funciona é, invariavelmente, considerado como evoluído a partir de um simples que funcionava” - John Gall • Grosso modo, “o mesmo gênio que inventou o HTTP inventou o REST”: Tim Berners-Lee • Obviamente existem diversas outras mentes brilhantes neste processo. • Um servidor REST não guarda estado, cada nó da cadeia: • recebe  modifica  repassa o estado de um recurso. • Isso se reflete em ESCALABILIDADE!
  • 18. 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
  • 19. URL? URI? • Tanto faz. • Na literatura aparecem os dois, alternadamente. • A URL, de um modo geral, identifica um recurso disponível na rede. [protocolo]://[usuário]:[senha]@[servidor]:[porta]/[caminho]/[recurso] URI Identificador Padrão de Recurso URL Localizador Padrão de Recursos URN Nome Padrão de Recurso
  • 20. 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.
  • 21. Passagem de parâmetros • No que concerne ao REST a passagem de parâmetros deve se dar via URL. • Após a identificação do recurso virá o sinal de ? seguido por pares de <chave>=<valor> • Os parâmetros são separados pelo & • Espaço pode ser representado por + • Caracteres especiais são codificados de acordo com a sua representação UNICODE/UTF8 no formato hexadecimal, após o sinal %: Ç  199  C7  %C7
  • 22. Oi? /usuario/mario.guedes GET (recupera) PUT (insere) POST (edita) DELETE (elimina) GET (recupera listagem) /usuario?inicio=20&limite=10
  • 23. 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 aplicação servidora.
  • 24. 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.
  • 25. JSON é simples! • A unit System.JSON possui várias classes para lidar com o JSON no Delphi.
  • 26. Caramba! Tenho que fazer tudo isso para consumir um serviço REST? • Resposta curta: Não! • Resposta longa: O Delphi XE7 traz consigo um conjunto de componentes que encapsula todas as dificuldades que discutimos até aqui. • Ufa! • Menos código na hora de consumir um servidor REST! • O namespace REST.* possui várias facilidades para lidar com toda esta complexidade que falamos até aqui.
  • 27. 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/
  • 28. REST API • Grandes serviços web possuem uma REST API. • É um conjunto de URLs e representações JSON bem documentadas. • Facebook, Twitter, Produtos Google, LinkedIN, Spotyfi, Netflix, Instagram, Amazon, GitHub, 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.
  • 29. Momento mão na massa: Recuperando os aniversários dos seus amigos do Facebook! • Vamos usar os componentes da paleta REST Client para listarmos os nosso amigos do Facebook. • Agora que já entendemos como funciona os conceitos de HTTP e REST fica mais simples de entender a “mágica”. • Para isso temos que usar a API REST do Facebook. • https://developers.facebook.com/
  • 30. Dá tempo para perguntas? • Muito obrigado pelo privilégio da sua audiência!  • Os exemplos poderão ser encontrados em: https://github.com/jmarioguedes/EC2014_REST.git
  • 31. Referências • http://pt.wikipedia.org/wiki/Hypertext_Transfer_Protocol • Livro: REST: Construa API's inteligentes de maneira simples http://www.casadocodigo.com.br/products/livro-rest Alexandre Saudate Veja se este código de desconto está válido: PARCEIRO-4tfc3687 • Livro: RESTful Serviços Web http://www.altabooks.com.br/restful-servicos-web.html Leonard Richardson e Sam Ruby • Como um verdadeiro sistema REST funciona: arquitetura e desempenho na Abril http://www.infoq.com/br/presentations/rest-arquitetura-abril Luis Cipriani
  • 32. HTTP/1.1 200 OK Content-Length: 544 { “nome” : “Mário Guedes” , “e-mail” : “mario.guedes@arrayof.com.br” , “blog” : “http://eugostododelphi.blogspot.com.br” , “perfis” : [ {“twitter” : “eugostododelphi”} , {“facebook” : “eugostododelphi”} , {“linkedin” : “jmarioguedes”} , {“slideshare” : “jmarioguedes”} , {“github” : “jmarioguedes”} , {“prezi” : “jmarioguedes”} ] }