sexta-feira, 27 de março de 2015

Web service em PHP

Neste artigo vamos utilizar PHP para criar um serviço web que devolve dados a partir de uma base de dados MySQL em formato XML ou JSON.

Para a consulta dos dados vamos utilizar MySQLi.

O serviço não vai requerer nenhum tipo de credênciais nem limites ao número de pedidos processados o que pode ser necessário em determinadas situações.

Começamos por definir os parâmetros para estabelecer a ligação ao servidor de base de dados.

<?php
$server="servidor";
$user="utilizador";
$password="password";
$database="base_dados";
?>


De seguida temos o código do serviço propriamente dito.

<?php

require "config.php";
//ligar à base de dados com objeto
$ligacao=new mysqli($server,$user,$password,$database);
//verificar ligação
if($ligacao->connect_error)
die("Erro na ligação: ".$ligacao->connect_error);

//parametros
if(isset($_GET['format']))
$output=$_GET['format'];
else
$output="xml"; //por defeito
if($output!='JSON'&&$output!='json'&&$output!='xml'&&$output!='XML')
$output="xml";
//dados
$sql="SELECT * FROM test_users";
$resultado=$ligacao->query($sql);
if($resultado->num_rows>0){
while($registo=$resultado->fetch_assoc())
$registos[]=array("registo"=>$registo);

header("Cache-Control: no-cache, must-revalidate");
if($output=="xml"||$output=="XML"){
$conteudo="Content-type: text/xml; charset=utf-8";
header($conteudo);
$linhas="";
$linha="";
foreach($registos as $index => $registo)
{
if(is_array($registo)){
foreach($registo as $campo => $valor){
if(is_array($valor)){
foreach($valor as $tag => $val)
$linha.=adicionarTag($tag,htmlentities($val));
}
$linha=adicionarTag("registo",$linha);
}
}
$linhas = $linhas.$linha;
$linha="";
}
echo adicionarTag("registos",$linhas);
}else{
$conteudo="Content-type: application/json; charset=utf-8";
header($conteudo);
echo json_encode(array('registos'=>$registos));
}
}
function adicionarTag($tag,$texto){
$temp="<".$tag.">".$texto."</".$tag.">";
return $temp;
}
?>



Este código pode ser picado aqui.

Sem comentários:

Enviar um comentário