Advertisement

Aula 08 - Web Services sem manutenção de estado (REST)



1-              Introdução

Nessa aula você irá aprender como construir um Web Service REST utilizando PHP. Primeiramente iremos definir o que são serviços REST e em seguida iremos mostrar um exemplo funcional de como construir esse serviço usando um arquivo como base de dados.

2-              Definição

Representational State Transfer (REST), em português Transferência Representacional de Estado, é um estilo de arquitetura de software que define um conjunto de restrições a serem usados para a criação de Web Services. Os Web Services que estão em conformidade com o estilo arquitetural REST, denominados Web Services RESTful, fornecem interoperabilidade entre sistemas de computadores na Internet. Os Web Services RESTful permitem que os sistemas solicitantes acessem e manipulem representações textuais de recursos da Web usando um conjunto uniforme e predefinido de operações sem estado.

"Recursos da Web" foram definidos pela primeira vez na World Wide Web como documentos ou arquivos identificados por suas URLs. No entanto, hoje, eles têm uma definição muito mais genérica e abstrata que engloba qualquer coisa ou entidade que pode ser identificada, nomeada, endereçada ou manipulada, da forma que for, na Web. Em um Web Services RESTful, as solicitações feitas ao URI de um recurso provocarão uma resposta com uma carga útil formatada em HTML, XML, JSON ou algum outro formato. A resposta pode confirmar que alguma alteração foi feita no recurso armazenado e a resposta pode fornecer links de hipertexto para outros recursos ou conjuntos de recursos relacionados. Quando o HTTP é usado, como é o mais comum, as operações (métodos HTTP) disponíveis são GET, HEAD, POST, PUT, PATCH, DELETE, CONNECT, OPTIONS e TRACE.

Usando um protocolo sem estado e operações padrão, os sistemas RESTful buscam desempenho, confiabilidade e capacidade de crescimento rápido, reutilizando componentes que podem ser gerenciados e atualizados sem afetar o sistema como um todo, mesmo enquanto estiver em execução.

O termo transferência de estado representacional foi introduzido e definido em 2000 por Roy Fielding em sua tese de doutoramento. A dissertação de Fielding explicou os princípios REST que eram conhecidos como "modelo de objeto HTTP", a partir de 1994, e foram usados ​​no projeto dos padrões HTTP 1.1 e URI (Uniform Resource Identifiers). O termo destina-se a evocar uma imagem de como um aplicativo da Web bem projetado se comporta: é uma rede de recursos da Web (uma máquina de estados virtuais) na qual o usuário avança pelo aplicativo selecionando identificadores de recursos, como http://www.exemplo.com/artigos/21, e operações de recursos, como GET ou POST (transições de estado do aplicativo), resultando na próxima representação do recurso (o próximo estado do aplicativo) sendo transferida para o usuário final para seu uso.

3-              Exemplo em PHP



if(isset($_GET['show'])){
       if($_GET['show'] == 'all'){
             $content = file_get_contents("db.json",true);
             echo $content;
       }else{
             $content = file_get_contents("db.json",true);
             $aContent = json_decode($content);
             for ($i=0; $i < count($aContent); $i++) {
                    if($aContent[$i]->id == intval($_GET['show'])){
                           echo json_encode($aContent[$i]);
                    }
             }
             if(!array_key_exists(intval($_GET['show']), $aContent)){
                    echo '[]';
             }
       }
}

No exemplo apresentado acima vemos um código muito simples que utiliza um banco de dados (que é na verdade um arquivo JSON). Nesse arquivo temos os seguintes dados:



[
      {
            "id": 0,
            "nome": "How I met your mother"
      },
      {
            "id": 1,
            "nome": "Friends"
      }
]


O código recebe o parâmetro “show” onde é possível fornecer o valor “all” caso o usuário queira mostrar todas as séries do arquivo. Esse parâmetro também recebe o “id” do filme e mostra os dados caso seja encontrado.


$data = json_decode(file_get_contents('php://input'), true);

if($data != null){
       $content = file_get_contents("db.json",true);
       $aContent = json_decode($content, true);
       array_push($aContent, $data);
       file_put_contents("db.json", json_encode($aContent));
       $updated = file_get_contents("db.json",true);
       echo json_encode($aContent);

}else{
       echo 'No data received!';
}

O código acima mostra como um POST pode ser recebido e escrito dentro de um arquivo JSON. Essa simulação de banco de dados mostra que é possível realizar operações de adição simplesmente passando os dados necessários para o Web Services.


Nenhum comentário

Conta pra mim sua opinião!

Fale comigo