Você está na página 1de 24

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
funes de anlise, implementao e
implantao de solues para softwares livres.
Atua h mais de 4 anos com programao em
PHP, MySql e jQuery, desde sistemas ERP at
websites institucionais e e-commerce.
Aluno do curso de Anlise e Desenvolvimento de
Sistemas na Faculdade OPET.

Web services
Web service uma soluo utilizada na integrao
de sistemas e na comunicao entre aplicaes
diferentes;
Caractersticas:

Interao novas aplicaes X antigas aplicaes;

Compatibilidade de plataformas;

Agilidade de processos;

Segurana;

Protocolo HTTP(HyperText Transfer Protocol Protocolo de Transferncia de Hipertexto)

Trata-se de um protocolo de comunicao entre


sistemas de informao que permite a transferncia
de dados entre redes de computadores,
principalmente na World Wide Web (Internet).

User Agent (O cliente)


User Agent, tambm chamado de Browser, refere-se ao parceiro
de uma sesso HTTP. O User Agent inicia o pedido(request) a
ser atendido(response) pelo servidor Web.
Web Server(O servidor)
Web servers so processos que permitem solicitaes HTTP
feitas por cliente Web (Browsers), e como resposta, retornam
informaes na forma de mensagens, ou outros tipos de
documentos, como por exemplo, textos, vdeos, imagens,
dentre outros.

HTTP um protocolo fcil de entender, pois


baseado no conceito de pedido e resposta (request e
response). Uma transao HTTP, independente da
sua complexidade, possui a seguinte estrutura
elementar:

Mtodo GET
Solicita algum recurso como um arquivo ou um script
CGI (qualquer dado que estiver identificado pelo
URI) por meio do protocolo HTTP.
Mtodo POST
Envia dados para serem processados (por exemplo,
dados de um formulrio HTML) para o recurso
especificado.

REST (Representational State Transfer Transferncia de Estado Representativo)


Criado em 2000 atravs 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 distribudos.
Tem como base o conceito de identificadores uniformes
de recursos(URIs).

URIs(Uniform Resource Identifier - Identificador


Uniforme de Recursos)

URL's com identificadores e parmetros

- 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
denominao ento, 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
- Manuteno (muito mais simples de modificar o
sistema)

JSON (JavaScript Object Notation Notao de


objeto Javascript)
Trata-se de uma estrutura de dados que faz parte do
javascript puro e no precisa de nenhuma biblioteca
ou plugin para trabalhar.
um subconjunto da notao de objeto de
JavaScript, mas seu uso no requer JavaScript
exclusivamente.
Estrutura de dados simples;
Tempo de execuo X XML;

JSON VS XML

Leitura

Aceitao

JSON (JavaScript Object Notation Notao de


objeto Javascript)
Estrutura:
A estrutura de dados JSON pode ser identificada de duas
formas:
- Como uma coleo 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 associaes
nome/valor):
[1, Paulo da Silva, 35, M]

JSON (JavaScript Object Notation Notao de


objeto Javascript)
Definindo uma varivel 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 Notao de


objeto Javascript)
Convertendo JSON para arrays ou objetos php e vice-versa

Para converses de arrays e objetos em php para a


estrutura de dados json, basta utilizar duas funes
nativas do prprio php:
- json_decode ($variavel, boolean[opcional,
default:false]);
- json_encode($variavel);

JSON (JavaScript Object Notation Notao de


objeto Javascript)
Utilizando o json_decode
<?php
//string json contendo os dados de um funcionrio
$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 Notao de


objeto Javascript)
Utilizando o json_encode

<?php
//Varivel contendo um array em php
$array = array( nome => Paulo da Silva, idade
=> 38, sexo => M );

?>

//Chama funo 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
funo echo ou print para imprimir o objeto na tela.
Posteriormente veremos como consumir estes dados.
Exemplo:
<?php
// string json contendo os dados de um funcionrio
$json_str = '{"nome":"Paulo da Silva", "idade":38, "sexo":
"M"}';
// disponibilizando para consumo
echo $json_str;
?>

Consumindo dados disponibilizados


Existem vrias formas de consumir os dados em php,
mas as duas principais e mais usuais so atravs da
funo 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 varivel $result estar todo o contedo retornado da
URI passada como parmetro para a funo.

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

Você também pode gostar