Chegamos aos controladores da aplicação, que no artigo anterior seriam os próximos logo após da rota. Recapitulando: a aplicação recebe a chamada HTTP, leva pra rotas pra verificar para onde vai esse requisição e no caso atual ele vai ir para algum controller. Os controllers podem chamar classes e métodos de muitos lugares dependendo do tamanho e do design da aplicação, como por exemplo QueryBuilders, UseCases, Services, Repositories entre outros.
Mas ainda não chegamos ao ponto de utilizar esses designs, vamos somente seguir o fluxo simples da requisição. Dentro do método do controller podemos literalmente colocar qualquer coisa e até mesmo nem dar retorno :), mas vou dar um exemplo mais decente:
public function metodoDoController()
{
// coloca o que quiser aqui mas vou dar um retorno do famoso hello world
return "Hello World";
}
Antes de continuar esqueci de dizer onde ficam os arquivos de controllers e como cria eles. Os arquivos ficam em app/Http/Controllers
e é possivel criar um novo com o comando php artisan make:controller NomeDoController
Isso é extremamente básico, vamos fazer algo útil mesmo, vamos pegar dados que vieram na requisição:
public function metodoDoController(Request $request)
{
$dadosDoRequest = $request->all();
}
Agora eu pedi a injeção do Request como parâmetro do método, o Laravel injeta automaticamente o objeto do Request, com essa injeção podemos fazer outras coisas mas mais adiante veremos mais afundo a injeção de dependência nos métodos de Controller. O método 'all' retorna um array com tudo de dado que veio no request. Vamos supor que esse é o método de login e deve receber email e senha na requisição:
public function login(Request $request)
{
$email = $request->email;
$senha = $request->senha;
return response()->json([
'email' => $email,
'senha' => $senha
]);
}
Agora obtive o email e senha utilizando o request de uma maneira diferente, chamando diretamente a chave do dado como se fosse uma propriedade do objeto. No PHP temos os métodos mágicos, e o __get()
é um deles utilizado amplamente dentro do Laravel, em outros casos veremos esse mesmo esquema de chamar propriedades que não foram definidas na classe. E pra finalizar o método utilizei o response()->json()
que retorna a resposta com o header 'application/json' para o cliente.
Somente com isso já podemos fazer coisas legais, como a famosa calculadora :)
public function somar(Request $request)
{
$numero1 = $request->numero1;
$numero2 = $request->numero2;
return response()->json([
'resultado' => $numero1 + $numero2
]);
}
Somente com isso já podemos realmente criar uma API que não precise de base de dados e ir explorando o Request e Response do Laravel. Use o wget, postman, insomnia, o navegador ou qualquer outra ferramenta para enviar requisições HTTP e teste sua API.
Na próxima veremos o início de banco de dados, já montando uma API mais dinâmica e legal :)
Top comments (0)