Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

API e sistema no mesmo projeto

Minha duvida seria a seguinte, no caso do meu projeto ter uma API (as rotas seriam montadas no routes/api.php) e também nesse mesmo projeto ter o sistema (as rotas ficariam em routes/web.php), como posso ter um reaproveitamento de código, sem precisar ter que criar 2 controllers separados, já que para o controller do meu sistema eu retornaria uma view e no controller da minha api eu retornaria um JSON?

Ex: Na minha API irei ter a rota que faz o cadastro, essa rota acessa um controller que faz tudo que tem que fazer e retorna o JSON, porém no meu sistema que esta nesse mesmo projeto eu também vou ter uma tela de cadastro que irá fazer a mesma coisa, porém o retorno não poderia ser um JSON e sim uma view.

2 respostas
solução!

Olá, Tiago.

Os Controllers precisam ser diferentes pois os Controllers controlam requisições, e as requisições são diferentes.

Mas o reaproveitamento de código é bem simples de implementar. Basta extrair o código "duplicado", ou seja, o código de negócios para uma nova classe. Normalmente este tipo de classe é referida como Service.

Então, para seus 2 SeriesControllers, por exemplo, você teria um SerieService. Ou pode ainda criar um SerieRepository que tenha a responsabilidade de buscar as séries. Ou uma classe para cada pequena tarefa.

Enfim, as opções são inúmeras. Cabe a você (que está arquitetando a aplicação) decidir qual faz mais sentido para seu caso.

Realmente era assim que estava pensando, trabalhando com services e repository, pensei que teria alguma outra forma, mas realmente dessa forma é a melhor, muito obrigado!