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

Roteadores

Roteadores nada mais são que Lookup Tables, que resolvem um dado um endereço ou endpoint para um procedimento à executar, forwarding ou outro roteador. Em resumo, uma tabela de roteamento resolvendo um procedimento, pode ser imaginada como:

Endpoint Método
GET:/usuario/<id> Usuario::obterUsuario($id)
POST:/usuario/ Usuario::adicionarUsuario()
DELETE:/usuario/<id> Usuario::excluirUsuario($id)

Onde os procedimentos do lado esquerdo são devidamente criados dentro de classes estáticas (classe Usuario no exemplo), como métodos. Para que seja fácil resolver o roteador, crie uma pasta classes no diretório raiz do projeto e crie o arquivo classes/Router.php com o conteúdo:

Tal classe facilitará o trabalho com tabelas de roteamento. A Tabela de Roteamento será demarcada através de um Mapa, e declararemos no arquivo de configuração principal (_global_config.php). Caso o leitor tenha preferência, ele pode defini-la no arquivo de configuração da máquina, permitindo maior controle em arquiteturas com muitas máquinas.

Adicionaremos uma simples tabela de roteamento no arquivo _global_config.php:

 

Para os endpoints, a seguinte sintaxe é utilizada:
MÉTODO:ENDPOINT
Onde o endpoint é uma expressão regular, o nome dos matches da regex será tratado pela própria classe Router. Caso o leitor não seja familiarizado com expressões regulares, utilize a sintaxe do exemplo para capturar trechos na URL.

Para uma aplicação real, o leitor pode adicionar quantos endpoints quiser, lembrando sempre do princípio: Embora o REST permita que o desenvolvedor dê o nome que quiser aos endpoints, deve-se sempre utilizar nomes simples, diretos e utilizando o método HTTP adequado.

 

Comentários