A construção de WebServices RESTful está surgindo como uma alternativa para a integração de sistemas independente de plataforma. Além de ser mais simples e leve que o SOAP, possui a capacidade de transmitir dados diretamente através de HTTP.
Nesse post não pretendo explicar o que é, e todos os princípios da arquitetura REST Transferência de Estado Representacional (Representational State Transfer), e quem não conhece e estiver a fim de aprender... esta disponível a própria
tese do Roy Fielding sobre o tema, e uma artigo
Wikipédia.
O RESTful foca em URIs e nos detalhes do protocolo HTTP para se beneficiar de seus recursos, sem a necessidade de passar a ação implicitamente na URL ex: Para que eu vou implicitar a ação Edit na minha url http://meusite/usuario/666/edit , se com o recursos do HTTP posso fazer assim: PUT http//meusite.com/usuario/666.
Assim como no Java existe JERSEY que é a implementação de referencia do JAX-RS (API RESTful web Service) , no PHP existe a simples e direta
Respect / Rest disponível
aqui no github.
Agora vamos faze de forma rápida e simples um exemplos do Respect\Rest usando os métodos HTTP (GET,POST,PUT,DELETE) para construir uma app RESTFul.
require_once 'bootstrap.php';
require_once 'Respect/Rest/Router.php';
require_once 'Respect/Rest/Request.php';
use Respect\Rest\
Router;
$router = new Router('/index.php/');
/**
* get
*
*/
$router->get('/meusite/app/login/*/*', function($login, $senha) {
if ($login == "rectec" && $senha == "123") {
return "Usuario=> $login Senha: " . md5($senha);
} else {
return "Você não existe!!!";
}
});
$router->get('/meusite/usuarios', function() {
return 'Listagem de usuarios';
})->accept(
array(
'text/html' => function($data) {
return 'usuarios em HTML';
},
'application/json' => function($data) {
return 'usuarios em JSON';
}
)
);
/**
* post
*
*/
$router->post('/meusite/usuario/', function() {
$data_back = json_decode(file_get_contents('php://input'));
return 'Cadastrando: ' . json_encode($data_back);
});
/**
* Alterar
*
*/
$router->put('/meusite/usuario/*', function($id = null) {
return 'Alterando: ' . $id;
});
/**
* Deletar
*
*/
$router->delete('/meusite/usuario/*', function($id = null) {
return 'Deletando: ' . $id;
});
Caso queira representar a saída com HTML, JSON, XML, JPG, etc, use o Cabeçalho Accept! Para testar vc pode usar um debug para RESTful web service chamado RESTClient no seu FireFox!