JSagon NodeJS Framework

Construa aplicações eficientes e escaláveis de maneira simples e rápida.


Controlador

Controladores são basicamente classes responsáveis por tratar requisições e retornar respostas(dados) para o cliente. Cada controlador possui um propósito específico, que por sua vez é subdividido em ações específicas. E essas ações são executadas através de rotas ligadas a ela.

Exemplo de código de um controlador que estende de uma classe de controlador base.

    import { ControllerBase } from '@jsagon/core'
     
    class HomeController extends ControllerBase {
    }
    
    export default HomeController

Atualmente existem dois tipos de controladores padrões que é possível importar de @jsagon/core, ControllerBase e RestControllerBase.

ControllerBase

O ControllerBase é um modelo padrão, sua implementação é voltada normalmente para projetos que trabalharão também com Views, além das comunicações json, etc. Isso porque internamente o sistema possui um modelo de mapeamento de Views, ou seja, o desenvolvedor não precisa escrever manualmente o caminho da view, o caminho é criado internamente com base nas convenções de pastas e arquivos.

Considere que o caminho do seguinte controlador se encontra em dev/src/app/FinancasWebsite/modules/Base/Controller/HomeController.ts e o seu código de implementação é:

    import { ControllerBase, Request, Response } from '@jsagon/core'
     
    class HomeController extends ControllerBase {
    
        public async contato(req: Request, res: Response) {
            return this.render({email: "contato@exemplo.com"})
        }
    
    }
    
    export default HomeController

Levando em consideração o caminho do Controlador e seu método contato (ação a ser chamada na rota), a view a ser mostrada deverá estar em resource/views/app/financas-website/base/home/contato.hbs.

Propriedades e métodos internos do ControllerBase

viewPath caminho da view.
layout caminho do layout da aplicação.
request métodos e dados da requisição realizada (similar ao Express).
response métodos e dados de resposta, a serem enviados para o usuário (similar ao Express).
index método público para renderização padrão da view
create método público para renderização padrão da view
edit método público para renderização padrão da view
detail método público para renderização padrão da view
render método padrão responsável por renderizar um arquivo/página

RestControllerBase

Controlador específico para aplicações do tipo Restful. Dispensa tratamento com views, e entre outros relacionados.

Propriedades e métodos internos do RestControllerBase

request métodos e dados da requisição realizada (similar ao Express).
response métodos e dados de resposta, a serem enviados para o usuário (similar ao Express).

Exemplo de implementação:

    import { RestControllerBase, Request, Response } from '@jsagon/core'
     
    class ProdutoController extends RestControllerBase {
    
        public async list(req: Request, res: Response) {
            return res.json([{id:1, nome: 'Empresa ação 1'}, {id:2, nome: 'Empresa ação 2'}])
        }
    
    }
    
    export default ProdutoController

Caso definíssemos a rota financas.com/app/produtos apontando para o método list deste controlador e o requisitássemos, seria retornado o json em questão como resposta.


Para um melhor entendimento de como funciona um Controlador, e como suas ações podem ser executadas, é preciso entender o conceito e a implementação de Rotas.