Você está visualizando atualmente Como criar API Rest com PHP

Como criar API Rest com PHP

Nessa aula iremos entender o que é, como funciona e como construir um Web Service, além disso, você vai entender como construir uma API REST com PHP. Ao final dessa aula você irá perceber que ela é apenas uma consolidação do estudo feito até o momento. O nome “Web Service” pode ser traduzido como serviço web. Até faz algum sentido, visto que esse tipo de aplicação não possui uma interface amigável com o usuário, mas sim apenas uma interface de comunicação por meio de uma forma padrão de dados.  

Quer saber mais sobre desenvolvimento web? Veja nosso curso gratuito de desenvolvimento web.

Definição de web service

Um Web Service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Os Web Services são componentes que permitem às aplicações enviar e receber dados. Cada aplicação pode ter a sua própria “linguagem”, que é traduzida para uma linguagem universal, um formato intermediário como XML, Json, CSV etc.

Para as empresas, os Web Services podem trazer agilidade para os processos e eficiência na comunicação entre cadeias de produção ou de logística. Toda e qualquer comunicação entre sistemas passa a ser dinâmica e principalmente segura, pois não há intervenção humana. Essencialmente, o Web Service faz com que os recursos da aplicação do software estejam disponíveis sobre a rede de forma normalizada.

Outras tecnologias fazem a mesma coisa; por exemplo, os browsers da Internet acessam as páginas Web disponíveis usando por norma as tecnologias da Internet, HTTP e HTML. No entanto, estas tecnologias não são bem-sucedidas na comunicação e integração de aplicações. Existe uma grande motivação sobre a tecnologia Web Service pois possibilita que diferentes aplicações se comuniquem entre si e utilizem recursos diferentes.

Utilizando a tecnologia Web Service, uma aplicação pode invocar outra para efetuar tarefas simples ou complexas mesmo que as duas aplicações estejam em diferentes sistemas e escritas em linguagens diferentes. Por outras palavras, os Web Services fazem com que os seus recursos estejam disponíveis para que qualquer aplicação cliente possa operar e extrair os recursos fornecidos pelo Web Service.  

Esse texto foi adaptado desse artigo.

Formatos aceitos em Web Services

Alguns anos atrás o padrão para transmissão de dados genérica era o XML (eXtensible Markup Language). O protocolo SOAP ficou bastante famoso e com o crescimento do JAVA esse tipo de documento era muito comum. Até hoje existem inúmeras aplicações que consomem serviços usando XML. No entanto, com a popularização da linguagem Javascript e diversos avanços nas tecnologias que permeiam os Web Services, foi criada uma alternativa para o XML que é o JSON (JavaScript Object).

Esse tipo de objeto permite que dados sejam trocados com um formato mais simples do que o XML. A popularização dos servidores chamados de REST foi um grande divisor de águas no mundo dos Web Services

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.

O que é um web service REST?

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.

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.  

Esse texto foi adaptado daqui.

Exemplo em PHP

Agora vamos apresentar um exemplo prático de como consumir uma API REST em PHP usando apenas recursos nativos.


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.

OBS: sempre que você for criar uma API REST com PHP ou qualquer outra linguagem, lembre-se sempre de proteger seus dados e também seu servidor. A proteção com autenticação mais comum utiliza um sistema chamado Oauth2.0. Se você planeja deixar algum serviço online, tome esse cuidado para não ter dores de cabeça.

Vinicius dos Santos

Apenas um apaixonado por Ciência da Computação e a forma com que ela pode transformar vidas!

Deixe um comentário

dezoito + 16 =