JSON – Criando o Web Service.

Esta é a aula 03 do curso de JSONVeja o cronograma completo aqui.


Como já vimos, o aplicativo deve se comunicar com o servidor, do lado do servidor temos o conjunto de códigos PHP aos quais chamaremos de Web Service. Um Web Service tem a função de disponibilizar dados para leitura. Já do lado do aplicativo temos um conjunto de códigos JSON que irão acessar o Web Service e fazer a leitura dos dados. Legal né?

Nesta aula de hoje vamos trabalhar apenas a programação do lado do servidor, ou seja, nosso Web Service.

O Projeto – Promoções de Supermercados.

Nosso aplicativo será de um um app que mostra promoções de mercados de Atibaia. A partir dos folhetos promocionais distribuídos nos mercados iremos cadastrar as promoções e exibir no nosso APP.

O Servidor

Nós iremos alimentar um banco de dados hospedado no Microsoft Azure (veja a aula – Como hospedar seu site PHP + MySQL gratuitamente no Microsoft Azure). No dashboard do portal Azure você poderá criar um banco de dados e obter um usuário e senha para programar o seu arquivo PHP.

O Banco de Dados

O banco de dados já foi criado e segue a seguinte estrutura;

tb_promocoes
– – – – – – – – – – – – – – – – – – – – – – – – –
id_promocao (int, autoincremento)
nome_do_mercado (varchar, 60) * chave secundária tipo INDEX
produto (varchar, 100) * chave secundária tipo INDEX
valor (decimal, 9,2)
validade_da_promocao (date)
imagem_do_produto (varchar, 20)
observacao (varchar, 200)

OBS: A chave secundária tipo INDEX melhora a performance nas consultas quando se utiliza o ORDER BY nome_do_mercado e/ou ORDER BY produto. Esta chave não é o mesmo que chave estrangeira.

Preparando o PHP para trabalhar com JSON

Nosso app precisa saber quais os dados que estão registrados no banco de dados, para isso, vamos criar um arquivo PHP que se conecta ao banco de dados (vou usar PDO) e que realize uma consulta na tabela tb_promocoes. Até aqui, nenhuma novidade, já vimos isso nas aulas de TPI II. Apenas fixe em sua mente: O PHP vai ser executado no servidor e não no aplicativo.

A novidade são as duas primeiras linhas que iremos acrescentar neste arquivo e a forma que a consulta será exibida na tela. Analise o código a seguir;

<?php
	/* prepara o documento para comunicação com o JSON, as duas linhas a seguir são obrigatórias 
	  para que o PHP saiba que irá se comunicar com o JSON, elas sempre devem estar no ínicio da página */
	header("Access-Control-Allow-Origin: *");
	header("Content-Type: application/json; charset=utf-8"); 
?>

<?php
// Dados do servidor da Hostinger
	$servidor = 'mysql.hostinger.com.br';
	$usuario  = 'u999961938_etec';
	$senha    = '[email protected]';
	$banco    = 'u999961938_ofert';

	try {
		$conecta = new PDO("mysql:host=$servidor;dbname=$banco", $usuario , $senha);
		$conecta->exec("set names utf8"); //permite caracteres latinos.
		$consulta = $conecta->prepare('SELECT * FROM tb_promocoes');
		$consulta->execute(array());  
		$resultadoDaConsulta = $consulta->fetchAll();
		
		$StringJson = "[";
		
	if ( count($resultadoDaConsulta) ) {
		foreach($resultadoDaConsulta as $registro) {
			
			if ($StringJson != "[") {$StringJson .= ",";}
			$StringJson .= '{"id_promocao":"' . $registro['id_promocao']  . '",';
			$StringJson .= '"nome_do_mercado":"' . $registro['nome_do_mercado']  . '",';	
			$StringJson .= '"produto":"' . $registro['produto']    . '",';	
			$StringJson .= '"valor":"' . $registro['valor']    . '",';	
			$StringJson .= '"validade_da_promocao":"' . $registro['validade_da_promocao']    . '",';	
			$StringJson .= '"imagem_do_produto":"' . $registro['imagem_do_produto']    . '",';	
			$StringJson .= '"observacao":"' . $registro['observacao'] . '"}';
		}  
		echo $StringJson . "]"; // Exibe o vettor JSON
  } 
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage(); // opcional, apenas para teste
}
?>

A saída deste arquivo pode ser visto neste endereço: http://appcinema.esy.es/mobile/lista_ofertas.php

saidaJson

Deixe seu comentário