Backend HTTP – Criando uma simples API REST com APACHE e PHP

Tratando as Requisições

Se observarmos o caminho até a chamada do método para tratar a requisição, veremos que ele começa com index.php ⇒ Router.php ⇒ CLASSE.php\MÉTODO. O leitor pode facilmente observar que qualquer require realizado no index.php também está disponível para ser utilizado dentro deste método, assim como qualquer método/classe dentro de qualquer arquivo da pasta classes e a própria instância singleton da GlobalConfig.

O método pode utilizar a instância da GlobalConfig para obter a conexão com o PDO ou realizar outro redirecionamento pelo Roteador.

Para propósito deste artigo, iremos criar uma tabela para os usuários no nosso banco de dados (lembrando que o leitor já deve estar familiarizado com banco de dados SQL):

 

INSERT

Começaremos com o método de INSERT. Modifique o método de inserção da classe Usuario para a seguinte forma:

 

Observe que como a instância do PDO é armazenada na classe GlobalConfig, podemos obter a instância reciclada sempre que quisermos chamando o método GedDbConn da singleton. Partimos por realizar a validação dos dados enviados por POST, os dados são enviados naturalmente pelo POST da requisição HTTP e são validados. Em caso de erro na validação, utilizamos a classe RequestUtil para enviar o erro, com os códigos 2, 3 e 4 para cada dado errado (O código 1 é reservado para o OK).

Caso toda validação seja efetuada com sucesso, preparamos a requisição para o banco de dados e realizamos a inclusão. Caso a inclusão seja efetuada com sucesso, retornamos o status 1, caso contrário, retornamos um erro HTTP 500 (Internal Server Error) e um código de erro 100 da nossa API. É muito interessante implementar um sistema de logs de erro ou avisos ao responsável pela manutenção do servidor com os erros que acontecem nesses casos.

 

SELECT

Criaremos agora o método de SELECT, modique o método obterUsuario para o seguinte:

 

Observe que mais uma vez, obtemos a instância reciclada do PDO, realizamos a requisição, verificamos por erro, e retornamos. Nesse caso, por conter um campo de texto em UTF-8, temos que tratar o encoding tanto no INSERT quanto no SELECT.

 

DELETE

A exclusão também não tem o menor segredo, modifique o método removerUsuario para o seguinte conteúdo:

 

Mais uma vez obtemos a instância do PDO, realizamos a operação, verificamos por erros e retornamos para o cliente.

Uma vez que todos os endpoints que queremos estão implementados, basta testarmos utilizando algum cliente HTTP, como o Advanced REST Client (plugin para Google Chrome), ou qualquer ferramenta online compativel, tudo deve estar funcionando até esse ponto, com a possibilidade de inserção, retorno e exclusão.

 

Comentários