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

Laravel e API. Reutilização de Código

Olá.

Estou com uma dúvida.

Estou criando uma aplicação de um projeto pessoal com o laravel e doctrine. Pois bem. Essa aplicação tem todo o uso web do laravel: autorização, validação, Blade...

Mas uma pequena parte do projeto quero servir como API. Pois um aplicativo consome PARTE dos recursos da aplicação.

Entretanto caí em um dilema: como reutilizar o código da página web para a mesma funcionalidade?

Por exemplo: vamos supor que eu queira modificar um elemento. Na página web eu trago todos os dados desse elemento... Mesmo que ele seja composto por diversos objetos. Ou seja, no controller, antes de chamar o return view, eu fiz todas as consultas necessárias. Agora, na API, supondo que eu queira realizar a mesma alteração de dados pelo aplicativo, gostaria de usar o mesmo código da página web, com excessão do return view. Afinal, se eu tiver uma modificação, modifico apenas um controller, não dois.

Qual a melhor forma para fazer isso? Pensei em em um controller que extende outro. Assim :

SerieController <<< pai SerieWebController extends SérieController SerieApiController extends SérieController

Assim, todo o código de recuperar os dados e etc estariam em SerieController, mas o código de devolver os dados, estariam ou em SerieWebController, ou SerieApiController, os quais seriam chamados de acordo com a rota

Mas eu queria saber se essa é uma boa forma de resolver o problema, se tem forma melhor...

2 respostas
solução!

Olá, Nauan. Você não vai precisar (nem deveria) usar herança pra esse caso não.

Pra esse cenário você vai pensar melhor sua arquitetura. Dá uma olhada nos cursos de Clean Architecture e DDD aqui na Alura. Eles vão te dar um bom caminho. :-)

Muito obrigado. Vou olhar, tava precisando dessa orientação de pra onde olhar.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software