Neste artigo irei mostrar como construir a API (ou Webservice) para integração de dados, que será responsável por disponibilizar as informações do banco de dados para que diversas plataformas possam as consumir, incluindo nosso aplicativo mobile que iremos desenvolver na sequência.

Em linhas gerais, essa API irá se conectar ao banco de dados, consultar todos os registros salvos na tabela cliente e “montar um pacote” dessas informações, permitindo que um aplicativo mobile, por exemplo, capture esse pacote para listar os dados em um determinado momento.

ATENÇÃO: Para o pleno funcionamento da API, você deverá possuir uma hospedagem e 1 domínio, no qual serão utilizados para consumir os dados, nas quais essas questões ficarão mais claras durante este artigo.

Criando o diretório “API”

O primeiro passo é criar um novo diretório em nosso projeto (via FTP – FileZilla) chamado api, que irá ficar responsável por conter os arquivos de nossa API, incluindo o SlimFramework. Observe a imagem abaixo para ver como e onde será criado:


Slim Framework

Como falamos no início dessa série, para agilizar a construção de nossa API, iremos utilizar o framework Slim (http://www.slimframework.com/), que é uma biblioteca escrita sob a linguagem PHP, que irá garantir construirmos um serviço de acesso aos dados íntegro.

Em seguida, vou baixar a versão mais recente do Slim no site https://github.com/slimphp/Slim/releases. Após fazer o download, extraia a pasta “Slim” (veja aqui) e envie para a pasta api, recém-criada em nosso projeto, via FTP.

Observe abaixo como deverá ficar, até aqui, nosso diretório em questão:

 

Desenvolvendo o código da “API”

Neste momento, temos a base necessária para criar nossa API, permitindo acessar as informações do banco de dados de qualquer plataforma, através de pacotes.

Para isso, através do Notepad++, vamos criar um novo arquivo e salvá-lo, no diretório api, com o nome index.php. É este arquivo que orá ser responsável por receber as requisições, consultar o banco de dados, e gerar o pacote de informações que nosso aplicativo irá consumir.

Abaixo, segue o código-fonte deste arquivo index.php, que irá possibilitar realizar essas operações e realizar a comunicação do aplicativo com o servidor e banco de dados web:

<?php
# Definindo pacotes de retorno em padrão JSON...
header('Content-Type: application/json;charset=utf-8');

# Carregando o framework Slim...
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();

# Iniciando o objeto de manipulação da API SlimFramework
$app = new \Slim\Slim();
$app->response()->header('Content-Type', 'application/json;charset=utf-8');

# Função de teste de funcionamento da API...
$app->get('/', function () {
	echo "Bem-vindo a API do Sistema de Clientes";
});

# Função para obter dados da tabela 'cliente'...
$app->get('/clientes',function(){

	# Variável que irá ser o retorno (pacote JSON)...
	$retorno = array();

	# Abrir conexão com banco de dados...
	$conexao = new MySQLi("SERVIDOR","USUARIO_SERVIDOR","SENHA_DO_USUARIO","BANCO_DE_DADOS");

	# Validar se houve conexão...
	if(!$conexao){ echo "Não foi possível se conectar ao banco de dados"; exit;}

	# Selecionar todos os cadastros da tabela 'cliente'...
	$registros = $conexao->query("select * from cliente");

	# Transformando resultset em array, caso ache registros...
	if($registros->num_rows>0){
		while($cliente = $registros->fetch_array(MYSQL_BOTH)) {
			$registro = array(
						"CODIGO"   => $cliente["CODIGO"],
						"NOME" 	   => utf8_encode($cliente["NOME"]),
						"TELEFONE" => $cliente["TELEFONE"],
						"EMAIL"    => $cliente["EMAIL"],
					);
			$retorno[] = $registro;
		}
	}

	# Encerrar conexão...
	$conexao->close();

	# Retornando o pacote (JSON)...
	$retorno = json_encode($retorno);
	echo $retorno;

});

# Executar a API (deixá-la acessível)...
$app->run();
?>

Algumas considerações sobre esse código:

  • Linhas 14: método de teste da api, que irá resultar uma mensagem de abertura, mostrando que a API está ‘ok’.
    Para acessar a API e consumir esse método, acesse a URL http://diegocavalca.com/articles/sistemadeclientes/api/;
  • Linha 19: assinatura dos método ‘clientes’, responsável por buscar as registros salvos na tabela cliente e retornar esses dados para o usuário que a requisita. Para acessar a API e consumir esse método, acesse a URL http://diegocavalca.com/articles/sistemadeclientes/api/clientes;
  • Linha 25: aqui realizamos a conexão ao banco de dados, onde você deverá informar os dados de sua hospedagem;
  • Linha 50: após a consulta aos dados ser realizada e as informações já tratadas e salvas na variável $retorno (a partir da linha 35), nós geramos um pacote seguinte um padrão JSON, que nada mais é que uma notação de comunicação de dados baseado em texto.
    Esse padrão JSON permitirá que nosso aplicativo mobile “entenda” o que nossa API (mais precisamente no método ‘clientes’) retorna, possibilitando assim listar os dados resultantes na tela para o usuário. Para mais detalhes sobre JSON, acesse http://json.org/json-pt.html.

Em tempo, para o pleno funcionamento desses métodos, precisamos criar e incluir mais um arquivo na pasta api. Por isso, crie um novo arquivo no Notepad++, salve-o como .htaccess e insira o seguinte código-fonte:

RewriteEngine On

# Some hosts may require you to use the `RewriteBase` directive.
# If you need to use the `RewriteBase` directive, it should be the
# absolute physical path to the directory that contains this htaccess file.
#
# RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

Esse arquivo .htaccess é responsável por permitir que os métodos da API escritos no arquivo index.php – com base no SlimFramework – estejam acessíveis através de uma chamada URL, conforme vimos a pouco.

Com isso, terminamos a criação do ambiente web de nosso sistema, que inclui:

  • O banco de dados MySQL, com a tabela cliente;
  • Relatório de clientes;
  • API (Webservice) de integração de dados.

Vejamos abaixo a imagem que mostra, por completo, a estrutura final do ambiente web de nosso projeto e seus detalhes:

Para reforçar, o método da API que irá permitir a integração dos dados com o aplicativo mobile estará disponível através da URL http://diegocavalca.com/articles/sistemadeclientes/api/clientes.

Na próxima aula, pra finalizar essa série, irei desenvolver o aplicativo mobile, que irá consumir a API desenvolvida (e seu método ‘clientes’) para listar os clientes cadastrados no banco de dados MySQL no ambiente web.

Continue: Parte 5 – Criando o aplicativo mobile e integrando dados via API