Slim Framework — Criando Microservices 08— Implementando Versionamento e Controllers para as Routes

Nosso projeto está quase pronto! E hoje vamos implementar o Controllers para tratar nossas Routes e versionamento da API. Esse passo é bem legal para organização de projetos com Slim.3

Nossa estrutura de pastas vai mudar. Precisamos modelar nosso projeto para que ele cresça de maneira que não atrapalhe os clientes que o consomem a cada nova versão. Quando tratamos de API’s e Microservices, não podemos despublicar ou modificar algum item crítico de uma API quando bem entendemos. Isso pode gerar muito transtornos com os clientes e demais serviços que que os consomem, então a estratégia mais inteligente é versionar nossa API e ir trocando todas as nossas dependências em todo o nosso parque sem causar Downtime.

http://localhost:8000/books

para

http://localhost:8000/v1/books

Dessa forma podemos criar novas versões de implementações das rotas e até mesmo compartilhar recursos entre elas.

$ mkdir -p src/v1/Controllers
$ touch src/v1/Controllers/booksController.php
$ touch src/v1/Controllers/AuthController.php

Vamos fazer uma alteração grande na nossa estrutura. Primeiramente, vamos limpar nosso arquivo index.php poluído. Primeiro vamos criar nossa nova estrutura de rotas.

$ touch routes.php

Nela vamos implementar algo parecido com:

routes.php

Estrutura básica de um Controller

Movendo o Endpoint de autenticação

No AuthController, vamos transformá-lo em um Evocable Class, pois só utilizaremos ele para nos retornar nosso JWT. Para isso, vamos receber todo nosso parâmetro do request dentro da função __invoke(). Isso já se tornou prático quando criamos a rota /v1/auth chamando o método ::class da mesma.

\App\v1\Controllers\AuthController::class

src/v1/Controllers/AuthController.php

Recriando o endpoint books

src/v1/Controllers/BookController.php

Secando nosso index.php

Nosso código até aqui: https://github.com/msfidelis/slim-microservices/tree/v8