Webservices em PHP
Recentemente fui escalada na empresa para realizar a
construção de um webservice PHP, era um novo desafio, já que nunca tinha
participado da construção de um webservice antes. O Primeiro passo foi realizar
pesquisas a respeito, percebi no google que a maioria dos exemplos mostrava a
utilização de codigo javascript e não em PHP especificamente.
Também percebi que tudo era um pouco confuso, já que os
exemplos misturavam o envio e recebimento de informações, e quando se tratava
do PHP a ênfase era apenas apresentar as funções nativas de JSON e mais nada.
De fato, a maioria dos webservices apresentam praticidade
quando o envio e recebimento de pacote de dados é feito utilizando o JSON, no
meu caso estava enviando dados em linguagem PHP/JSON, e a outra empresa que
estava recebendo tratava os dados JSON na linguagem JAVA, é fantástico fazer
dois sistemas "conversarem" mesmo que em linguagens diferentes.
O Que é JSON?
JSON é a abreviatura de Javascript Object Notation, mas não
se deixe enganar pelo nome, embora soe como se fosse especifico para
Javascript, esse formato pode ser facilmente lido e escrito por uma ampla
variedade de linguagens de programação. Possui um formato bem simples, leve,
que pode representar dados aninhados e estruturados.
Lembra um array associativo ou objeto com propriedade, onde
uma { (chave) será utilizada para indicar níveis de profundidade da estrutura,
e as chaves e os valores são separados por dois pontos, e cada registro de nível
é separado por uma virgula. veja o exemplo abaixo:
{"mensagem": {"en":"hello
friend", "pt":"oi amigo"}}
JSON E PHP
Para gerar essa estrutura através do PHP utiliza-se a função
nativa do php json_encode, neste caso você estaria "empacotando" os
dados para serem enviados, veja a linha abaixo:
echo json_encode(array("message" => "hello
you"));
No caso de você "receber" o pacote de dados em
JSON e for necessário transforma-los em estrutura php, basta usar a função
nativa json_decode, veja a linha abaixo:
$data = json_decode('{"message":"hello
you"}');
var_dump($data);
Tudo bem, com certeza você viu esses exemplos nos google,
utilizando as funções nativas do PHP, a grande duvida e que não resolvia o meu
problema e nem o seu é: "COMO ENVIAR OS DADOS PARA O OUTROS
SERVIDOR?"
Fiz diversas pesquisas no google e nada de encontrar algo
que explica-se minha necessidade, foi então que procurei por livros que
tratavam sobre o tema, encontrei o livro "Web Services em PHP" da
autora Lorna Jane Mitchell, editora O'REILLY novatec. Fui até a livraria e
percebi que o livro era muito curtinho, fininho e com um preço um pouco acima
do imaginado para o livro, dei uma passada rápida nas paginas e vi o que
poderia ser a solução do meu problema, decidi levar o livro pra casa, e
encontrei o que precisava.
O Livro é muito bom, tem muitas abordagens, e em uma das
paginas encontrei como enviar os dados para uma aplicação existente. Segue
abaixo um trecho do código onde se utiliza funções nativas também para se fazer
o envio dos dados.
//dados que você vai enviar
$data = json_encode($queryresult);
//url pra onde será enviado os dados, seu parceiro deverá
lhe fornecer um
$url = "http://www.urldaaplicacaodoparceiro.com";
$ch = curl_init($url);
//abaixo ele seta as opções, como envio via get ou post, os
dados data, content type, e depois os retornos de transferência.
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:
application/json',
'Authorization:
token ' . $access_token)
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$data = json_decode($result, true);
var_dump($data);
Quero lembrar que o código acima é um código fictício e
incompleto, recomendo uma boa leitura neste livro que indiquei, pois ele contem
dicas valiosas, assim como novas pesquisas no google pode orientá-los melhor
quanto ao envio de dados para outro servidor via webservice.
Quanto ao processo de recebimento de dados, confesso que não
sei exatamente qual a melhor forma de montar, receber e tratar os dados, pois
não participei dessa etapa de construção. Quem sabe futuramente tenha algo novo
referente a isto para aprender e repassar para vocês.
Boa sorte e até a próxima.
Comentários
Postar um comentário