SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
Criando e consumindo
Web service REST com PHP e JSON
Palestrante: Weiberlan Garcia
Weiberlan Garcia
●
Consultor de Software Livre, trabalha na empresa
Ambiente Livre Tecnologia. Desempenha
funções de análise, implementação e
implantação de soluções para softwares livres.
Atua há mais de 4 anos com programação em
PHP, MySql e jQuery, desde sistemas ERP até
websites institucionais e e-commerce.
●
Aluno do curso de Análise e Desenvolvimento de
Sistemas na Faculdade OPET.
Web services
Web service é uma solução utilizada na integração
de sistemas e na comunicação entre aplicações
diferentes;
Características:
● Interação novas aplicações X antigas aplicações;
● Compatibilidade de plataformas;
● Agilidade de processos;
● Segurança;
Protocolo HTTP(HyperText Transfer Protocol -
Protocolo de Transferência de Hipertexto)
● Trata-se de um protocolo de comunicação entre
sistemas de informação que permite a transferência
de dados entre redes de computadores,
principalmente na World Wide Web (Internet).
User Agent (O cliente)
User Agent, também chamado de Browser, refere-se ao parceiro
de uma sessão HTTP. O User Agent inicia o pedido(request) a
ser atendido(response) pelo servidor Web.
Web Server(O servidor)
Web servers são processos que permitem solicitações HTTP
feitas por cliente Web (Browsers), e como resposta, retornam
informações na forma de mensagens, ou outros tipos de
documentos, como por exemplo, textos, vídeos, imagens,
dentre outros.
HTTP é um protocolo fácil de entender, pois é
baseado no conceito de pedido e resposta (request e
response). Uma transação HTTP, independente da
sua complexidade, possui a seguinte estrutura
elementar:
Método GET
Solicita algum recurso como um arquivo ou um script
CGI (qualquer dado que estiver identificado pelo
URI) por meio do protocolo HTTP.
Método POST
Envia dados para serem processados (por exemplo,
dados de um formulário HTML) para o recurso
especificado.
REST (Representational State Transfer -
Transferência de Estado Representativo)
Criado em 2000 através de uma tese de doutorado
de Roy Fielding. Que por sinal é um dos criadores do
protocolo http.
Trata-se de um estilo de arquitetura de software para
sistemas distribuídos.
Tem como base o conceito de identificadores uniformes
de recursos(URIs).
URIs(Uniform Resource Identifier - Identificador
Uniforme de Recursos)
● URL's com identificadores e parâmetros
- Exemplo de URIs:
http://www.dominio.com.br/webserviceRest/?
retornarClientes=true&idcliente=21
Webservice RESTfull
Ao se criar um webservice na arquitetura REST, a sua
denominação então, passa a se tornar RESTfull.
Em suma, um webservice RESTfull nada mais é do
que usar o HTTP como ele foi concebido, ou seja,
utilizando GET e POST por exemplo.
Webservice RESTfull
Vantagens:
- Agilidade e Simplicidade
- Uso correto do protocolo HTTP (Ex: uso de GET)
- Produtividade e Clareza
- Manutenção (muito mais simples de modificar o
sistema)
JSON (JavaScript Object Notation – Notação de
objeto Javascript)
Trata-se de uma estrutura de dados que faz parte do
javascript puro e não precisa de nenhuma biblioteca
ou plugin para trabalhar.
É um subconjunto da notação de objeto de
JavaScript, mas seu uso não requer JavaScript
exclusivamente.
Estrutura de dados simples;
Tempo de execução X XML;
JSON VS XML
Leitura
Aceitação
JSON (JavaScript Object Notation – Notação de
objeto Javascript)
Estrutura:
A estrutura de dados JSON pode ser identificada de duas
formas:
- Como uma coleção de pares nome/valor. A estrutura fica
semelhante a um array associativo do php:
{“id” : “1”, “nome” : “Paulo da Silva”, “idade” : “35”, “sexo” :
“M”}
- Ou uma lista ordenada de valores (Sem associações
nome/valor):
[“1”, “Paulo da Silva”, “35”, “M”]
JSON (JavaScript Object Notation – Notação de
objeto Javascript)
Definindo uma variável php com valor de objeto JSON
- Array associativo
$cliente = ‘{“id” : “1”, “nome” : “Paulo da Silva”, “idade”
: “35”, “sexo” : “M”}’;
Ou
- Lista ordenada:
$cliente = ‘[“1”, "Paulo da Silva", “35”, "M"]’;
JSON (JavaScript Object Notation – Notação de
objeto Javascript)
Convertendo JSON para arrays ou objetos php e vice-versa
Para conversões de arrays e objetos em php para a
estrutura de dados json, basta utilizar duas funções
nativas do próprio php:
- json_decode ($variavel, boolean[opcional,
default:false]);
- json_encode($variavel);
JSON (JavaScript Object Notation – Notação de
objeto Javascript)
Utilizando o json_decode
<?php
//string json contendo os dados de um funcionário
$json_str = '{"nome":"Paulo da Silva", "idade":38, "sexo":
"M"}';
//faz o parsing na string, gerando um objeto PHP
$obj = json_decode($json_str);
//faz o parsing na string, gerando um array PHP
$array = json_decode($json_str, true);
?>
JSON (JavaScript Object Notation – Notação de
objeto Javascript)
Utilizando o json_encode
<?php
//Variável contendo um array em php
$array = array( “nome” => “Paulo da Silva”, “idade”
=> “38”, “sexo” => “M” );
//Chama função para converter o array em um json
$json = json_encode($array);
?>
Disponibilizando dados para consumo
Para disponibilizar os dados json para consumo, basta usar a
função echo ou print para imprimir o objeto na tela.
Posteriormente veremos como consumir estes dados.
Exemplo:
<?php
// string json contendo os dados de um funcionário
$json_str = '{"nome":"Paulo da Silva", "idade":38, "sexo":
"M"}';
// disponibilizando para consumo
echo $json_str;
?>
Consumindo dados disponibilizados
Existem várias formas de consumir os dados em php,
mas as duas principais e mais usuais são através da
função nativa do php file_get_contents() ou da biblioteca
cURL().
file_get_contents()
$result =
file_get_contents('http://www.dominio.com.br/webservice
Rest/?retornarClientes=true&idcliente=21');
Na variável $result estará todo o conteúdo retornado da
URI passada como parâmetro para a função.
Consumindo dados disponibilizados
cURL()
$curl =
curl_init('http://www.dominio.com.br/webserviceRest/?
retornarClientes=true&idcliente=21');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,
true);
$result = curl_exec($ch);
Contatos
● weiberlan@ambientelivre.com.br
● facebook.com/ambientelivre
● @ambientelivre
● www.ambientelivre.com.br

Contenu connexe

Tendances

POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)Marcello Thiry
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
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
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX Sérgio Souza Costa
 
PHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e QuerystringPHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e QuerystringDaniel Brandão
 
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxDesenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxAlmir Neto
 
Introdução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebIntrodução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebAnderson Luís Furlan
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e FuturesHelder da Rocha
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
Git e Github para Iniciantes
Git e Github para IniciantesGit e Github para Iniciantes
Git e Github para IniciantesLoiane Groner
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysLoiane Groner
 
Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Abdelouahed Abdou
 

Tendances (20)

Principais diagramas da UML
Principais diagramas da UMLPrincipais diagramas da UML
Principais diagramas da UML
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Php with mysql ppt
Php with mysql pptPhp with mysql ppt
Php with mysql ppt
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
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
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX
 
PHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e QuerystringPHP Aula 06 - Include, Require e Querystring
PHP Aula 06 - Include, Require e Querystring
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxDesenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
 
Introdução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebIntrodução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento Web
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e Futures
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Curso javascript básico
Curso javascript básicoCurso javascript básico
Curso javascript básico
 
Git e Github para Iniciantes
Git e Github para IniciantesGit e Github para Iniciantes
Git e Github para Iniciantes
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
 
Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)
 

En vedette

Como implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHPComo implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHPPablo Aguiar
 
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 JSONAmbiente Livre
 
Mini Curso Web Services com PHP
Mini Curso Web Services com PHPMini Curso Web Services com PHP
Mini Curso Web Services com PHPelliando dias
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no androidAlexandre Antunes
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP TutorialLorna Mitchell
 
Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHPZoran Jeremic
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIFernando Camargo
 
Criando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHPCriando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHP2km interativa!
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoLuiz Junior
 
Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)Bruno Pedro
 
Criando aplicações RestFul com Zend Framework 2
Criando aplicações RestFul com Zend Framework 2Criando aplicações RestFul com Zend Framework 2
Criando aplicações RestFul com Zend Framework 2Elton Minetto
 
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java MonografiaREST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java MonografiaCarl Edwin Antonio Nascimento
 
Criando um Aplicativo Android para Consumir uma API RESTFul Desenvolvida em A...
Criando um Aplicativo Android para Consumir uma API RESTFul Desenvolvida em A...Criando um Aplicativo Android para Consumir uma API RESTFul Desenvolvida em A...
Criando um Aplicativo Android para Consumir uma API RESTFul Desenvolvida em A...Bruno Vasconcellos
 
REST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in CodeigniterREST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in CodeigniterSachin G Kulkarni
 
Capítulo 10 - Sincronização de dados usando JSON
Capítulo 10 - Sincronização de dados usando JSONCapítulo 10 - Sincronização de dados usando JSON
Capítulo 10 - Sincronização de dados usando JSONMarcio Palheta
 
Segurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHPSegurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHPGedvan Dias
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porteFelipe Ribeiro
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 

En vedette (20)

Jquery fundamentals-book-pt-br
Jquery fundamentals-book-pt-brJquery fundamentals-book-pt-br
Jquery fundamentals-book-pt-br
 
Como implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHPComo implementar APIs RESTful em PHP
Como implementar APIs RESTful em PHP
 
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
 
Mini Curso Web Services com PHP
Mini Curso Web Services com PHPMini Curso Web Services com PHP
Mini Curso Web Services com PHP
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
API - Como fazer?
API - Como fazer?API - Como fazer?
API - Como fazer?
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
 
Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHP
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful API
 
Criando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHPCriando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHP
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 
Web Services (in portuguese)
Web Services (in portuguese)Web Services (in portuguese)
Web Services (in portuguese)
 
Criando aplicações RestFul com Zend Framework 2
Criando aplicações RestFul com Zend Framework 2Criando aplicações RestFul com Zend Framework 2
Criando aplicações RestFul com Zend Framework 2
 
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java MonografiaREST – Desmistificando A Implementação De Web Services REST Em Java Monografia
REST – Desmistificando A Implementação De Web Services REST Em Java Monografia
 
Criando um Aplicativo Android para Consumir uma API RESTFul Desenvolvida em A...
Criando um Aplicativo Android para Consumir uma API RESTFul Desenvolvida em A...Criando um Aplicativo Android para Consumir uma API RESTFul Desenvolvida em A...
Criando um Aplicativo Android para Consumir uma API RESTFul Desenvolvida em A...
 
REST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in CodeigniterREST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in Codeigniter
 
Capítulo 10 - Sincronização de dados usando JSON
Capítulo 10 - Sincronização de dados usando JSONCapítulo 10 - Sincronização de dados usando JSON
Capítulo 10 - Sincronização de dados usando JSON
 
Segurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHPSegurança em Aplicações Web com PHP
Segurança em Aplicações Web com PHP
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 

Similaire à Criando e consumindo Web service REST com PHP e JSON

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
 
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
 
Webservices e Computação em Nuvem com PHP
Webservices e Computação em Nuvem com PHPWebservices e Computação em Nuvem com PHP
Webservices e Computação em Nuvem com PHPFlávio Lisboa
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 
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
 
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
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0jesuinoPower
 
Integrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONIntegrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONMario Guedes
 
Web 2.0 e RIA com PHP
Web 2.0 e RIA com PHPWeb 2.0 e RIA com PHP
Web 2.0 e RIA com PHPAdler Medrado
 
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.pdfBrunoAlbuquerque864673
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETRenato Groff
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETRenato Groff
 
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTJavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTRodrigo Cândido da Silva
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETRenato Groff
 

Similaire à Criando e consumindo Web service REST com PHP e JSON (20)

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
 
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
 
Webservices e Computação em Nuvem com PHP
Webservices e Computação em Nuvem com PHPWebservices e Computação em Nuvem com PHP
Webservices e Computação em Nuvem com PHP
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
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
 
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...
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 
REST com Python
REST com PythonREST com Python
REST com Python
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
Integrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONIntegrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSON
 
Web apis
Web apisWeb apis
Web apis
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Web 2.0 e RIA com PHP
Web 2.0 e RIA com PHPWeb 2.0 e RIA com PHP
Web 2.0 e RIA com PHP
 
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
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTJavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 
Web Services
Web ServicesWeb Services
Web Services
 

Plus de Marcio Junior Vieira

Programação de Macros com LibreOffice Basic
Programação de Macros com LibreOffice BasicProgramação de Macros com LibreOffice Basic
Programação de Macros com LibreOffice BasicMarcio Junior Vieira
 
Programacao de macros_com_libre_office_basic_slideshare
Programacao de macros_com_libre_office_basic_slideshareProgramacao de macros_com_libre_office_basic_slideshare
Programacao de macros_com_libre_office_basic_slideshareMarcio Junior Vieira
 
E data sourceE-DataSourceMail - Consultas a Fonte de Dados através de e-Mails...
E data sourceE-DataSourceMail - Consultas a Fonte de Dados através de e-Mails...E data sourceE-DataSourceMail - Consultas a Fonte de Dados através de e-Mails...
E data sourceE-DataSourceMail - Consultas a Fonte de Dados através de e-Mails...Marcio Junior Vieira
 
Palestra: Customizando uma plataforma de CRM Open Source - SugarCRM
Palestra: Customizando uma plataforma de CRM Open Source - SugarCRMPalestra: Customizando uma plataforma de CRM Open Source - SugarCRM
Palestra: Customizando uma plataforma de CRM Open Source - SugarCRMMarcio Junior Vieira
 
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013Marcio Junior Vieira
 
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaPalestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaMarcio Junior Vieira
 

Plus de Marcio Junior Vieira (6)

Programação de Macros com LibreOffice Basic
Programação de Macros com LibreOffice BasicProgramação de Macros com LibreOffice Basic
Programação de Macros com LibreOffice Basic
 
Programacao de macros_com_libre_office_basic_slideshare
Programacao de macros_com_libre_office_basic_slideshareProgramacao de macros_com_libre_office_basic_slideshare
Programacao de macros_com_libre_office_basic_slideshare
 
E data sourceE-DataSourceMail - Consultas a Fonte de Dados através de e-Mails...
E data sourceE-DataSourceMail - Consultas a Fonte de Dados através de e-Mails...E data sourceE-DataSourceMail - Consultas a Fonte de Dados através de e-Mails...
E data sourceE-DataSourceMail - Consultas a Fonte de Dados através de e-Mails...
 
Palestra: Customizando uma plataforma de CRM Open Source - SugarCRM
Palestra: Customizando uma plataforma de CRM Open Source - SugarCRMPalestra: Customizando uma plataforma de CRM Open Source - SugarCRM
Palestra: Customizando uma plataforma de CRM Open Source - SugarCRM
 
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
 
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaPalestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
 

Criando e consumindo Web service REST com PHP e JSON

  • 1. Criando e consumindo Web service REST com PHP e JSON Palestrante: Weiberlan Garcia
  • 2. Weiberlan Garcia ● Consultor de Software Livre, trabalha na empresa Ambiente Livre Tecnologia. Desempenha funções de análise, implementação e implantação de soluções para softwares livres. Atua há mais de 4 anos com programação em PHP, MySql e jQuery, desde sistemas ERP até websites institucionais e e-commerce. ● Aluno do curso de Análise e Desenvolvimento de Sistemas na Faculdade OPET.
  • 3. Web services Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes; Características: ● Interação novas aplicações X antigas aplicações; ● Compatibilidade de plataformas; ● Agilidade de processos; ● Segurança;
  • 4. Protocolo HTTP(HyperText Transfer Protocol - Protocolo de Transferência de Hipertexto) ● Trata-se de um protocolo de comunicação entre sistemas de informação que permite a transferência de dados entre redes de computadores, principalmente na World Wide Web (Internet).
  • 5. User Agent (O cliente) User Agent, também chamado de Browser, refere-se ao parceiro de uma sessão HTTP. O User Agent inicia o pedido(request) a ser atendido(response) pelo servidor Web. Web Server(O servidor) Web servers são processos que permitem solicitações HTTP feitas por cliente Web (Browsers), e como resposta, retornam informações na forma de mensagens, ou outros tipos de documentos, como por exemplo, textos, vídeos, imagens, dentre outros.
  • 6. HTTP é um protocolo fácil de entender, pois é baseado no conceito de pedido e resposta (request e response). Uma transação HTTP, independente da sua complexidade, possui a seguinte estrutura elementar:
  • 7. Método GET Solicita algum recurso como um arquivo ou um script CGI (qualquer dado que estiver identificado pelo URI) por meio do protocolo HTTP. Método POST Envia dados para serem processados (por exemplo, dados de um formulário HTML) para o recurso especificado.
  • 8. REST (Representational State Transfer - Transferência de Estado Representativo) Criado em 2000 através de uma tese de doutorado de Roy Fielding. Que por sinal é um dos criadores do protocolo http. Trata-se de um estilo de arquitetura de software para sistemas distribuídos. Tem como base o conceito de identificadores uniformes de recursos(URIs).
  • 9. URIs(Uniform Resource Identifier - Identificador Uniforme de Recursos) ● URL's com identificadores e parâmetros - Exemplo de URIs: http://www.dominio.com.br/webserviceRest/? retornarClientes=true&idcliente=21
  • 10. Webservice RESTfull Ao se criar um webservice na arquitetura REST, a sua denominação então, passa a se tornar RESTfull. Em suma, um webservice RESTfull nada mais é do que usar o HTTP como ele foi concebido, ou seja, utilizando GET e POST por exemplo.
  • 11. Webservice RESTfull Vantagens: - Agilidade e Simplicidade - Uso correto do protocolo HTTP (Ex: uso de GET) - Produtividade e Clareza - Manutenção (muito mais simples de modificar o sistema)
  • 12. JSON (JavaScript Object Notation – Notação de objeto Javascript) Trata-se de uma estrutura de dados que faz parte do javascript puro e não precisa de nenhuma biblioteca ou plugin para trabalhar. É um subconjunto da notação de objeto de JavaScript, mas seu uso não requer JavaScript exclusivamente. Estrutura de dados simples; Tempo de execução X XML;
  • 16. JSON (JavaScript Object Notation – Notação de objeto Javascript) Estrutura: A estrutura de dados JSON pode ser identificada de duas formas: - Como uma coleção de pares nome/valor. A estrutura fica semelhante a um array associativo do php: {“id” : “1”, “nome” : “Paulo da Silva”, “idade” : “35”, “sexo” : “M”} - Ou uma lista ordenada de valores (Sem associações nome/valor): [“1”, “Paulo da Silva”, “35”, “M”]
  • 17. JSON (JavaScript Object Notation – Notação de objeto Javascript) Definindo uma variável php com valor de objeto JSON - Array associativo $cliente = ‘{“id” : “1”, “nome” : “Paulo da Silva”, “idade” : “35”, “sexo” : “M”}’; Ou - Lista ordenada: $cliente = ‘[“1”, "Paulo da Silva", “35”, "M"]’;
  • 18. JSON (JavaScript Object Notation – Notação de objeto Javascript) Convertendo JSON para arrays ou objetos php e vice-versa Para conversões de arrays e objetos em php para a estrutura de dados json, basta utilizar duas funções nativas do próprio php: - json_decode ($variavel, boolean[opcional, default:false]); - json_encode($variavel);
  • 19. JSON (JavaScript Object Notation – Notação de objeto Javascript) Utilizando o json_decode <?php //string json contendo os dados de um funcionário $json_str = '{"nome":"Paulo da Silva", "idade":38, "sexo": "M"}'; //faz o parsing na string, gerando um objeto PHP $obj = json_decode($json_str); //faz o parsing na string, gerando um array PHP $array = json_decode($json_str, true); ?>
  • 20. JSON (JavaScript Object Notation – Notação de objeto Javascript) Utilizando o json_encode <?php //Variável contendo um array em php $array = array( “nome” => “Paulo da Silva”, “idade” => “38”, “sexo” => “M” ); //Chama função para converter o array em um json $json = json_encode($array); ?>
  • 21. Disponibilizando dados para consumo Para disponibilizar os dados json para consumo, basta usar a função echo ou print para imprimir o objeto na tela. Posteriormente veremos como consumir estes dados. Exemplo: <?php // string json contendo os dados de um funcionário $json_str = '{"nome":"Paulo da Silva", "idade":38, "sexo": "M"}'; // disponibilizando para consumo echo $json_str; ?>
  • 22. Consumindo dados disponibilizados Existem várias formas de consumir os dados em php, mas as duas principais e mais usuais são através da função nativa do php file_get_contents() ou da biblioteca cURL(). file_get_contents() $result = file_get_contents('http://www.dominio.com.br/webservice Rest/?retornarClientes=true&idcliente=21'); Na variável $result estará todo o conteúdo retornado da URI passada como parâmetro para a função.
  • 23. Consumindo dados disponibilizados cURL() $curl = curl_init('http://www.dominio.com.br/webserviceRest/? retornarClientes=true&idcliente=21'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch);