Class: Controller

@nginstack/engine/lib/router/Controller~ Controller


new Controller()

Classe base para todos os controladores que utilizem a API de roteamento do Engine.

Extends

  • Emitter

Members


moduleFileName :string

Nome do módulo onde o controlador foi declarado. Utilizado apenas nas mensagens de erro para auxiliar o desenvolvedor a localizar o controlador responsável por uma falha em uma rota.

Type:
  • string

Methods


<static> wrap(object)

Cria um controlador que encapsula o objeto informado. Todas as ações do controlador serão delegadas para o objeto informado e deverão ser criadas como métodos dele.

Parameters:
Name Type Description
object Object

Objeto que será encapsulado pelo controlador.


badRequest( [opt_content])

Cria uma resposta com erro BAD_REQUEST. Opcionalmente, pode ser informado o conteúdo da resposta.

Parameters:
Name Type Argument Description
opt_content Object <optional>

Conteúdo da resposta.

Returns:
Type
RouteResult

created( [opt_content])

Cria uma resposta com estado CREATED. Opcionalmente, pode ser informado o conteúdo da resposta.

Parameters:
Name Type Argument Description
opt_content Object <optional>

Conteúdo da resposta.

Returns:
Type
RouteResult

forbidden( [opt_content])

Cria uma resposta com erro FORBIDDEN. Opcionalmente, pode ser informado o conteúdo da resposta.

Parameters:
Name Type Argument Description
opt_content Object <optional>

Conteúdo da resposta.

Returns:
Type
RouteResult

hasAction(name)

Verifica se há uma ação com o nome informado.

Parameters:
Name Type Description
name string

Nome do método a ser validado sua presença.

Returns:

Retorna true caso haja uma ação com o nome informado.

Type
boolean

noContent()

Cria uma resposta com estado NO_CONTENT.

Returns:
Type
RouteResult

notFound( [opt_content])

Cria uma resposta com erro NOT_FOUND. Opcionalmente, pode ser informado o conteúdo da resposta.

Parameters:
Name Type Argument Description
opt_content Object <optional>

Conteúdo da resposta.

Returns:
Type
RouteResult

notModified()

Cria uma resposta com status NOT_MODIFIED (304), indicando que o cache do cliente continua válido em uma requisição com cabeçalhos de verificação de cache.

Returns:
Type
RouteResult

ok( [opt_content])

Cria uma resposta com estado OK. Opcionalmente, pode ser informado o conteúdo da resposta.

Parameters:
Name Type Argument Description
opt_content Object <optional>

Conteúdo da resposta.

Returns:
Type
RouteResult

permanentRedirect(url)

Cria uma resposta com status PERMANENT_REDIRECT (308), indicando que o recurso requisitado foi movido definitivamente para a URL informada.

Parameters:
Name Type Description
url string

Nova URL definitiva do recurso da requisição.

Returns:
Type
RouteResult

runAction(action, parameters, request, response)

Executa uma ação do controlador com os parâmetros informados. Uma ação da controladora é um método da classe. A diferença entre executar este método e executar diretamente o método do controlador é que os eventos beforeAction e afterAction são emitidos.

Parameters:
Name Type Description
action string

Nome da ação a ser executada. Uma ação deverá ser implementada como método do controlador.

parameters Array.<*>

Parâmetros que devem ser passados para o método do controlador responsável pela ação.

request Request

Requisição HTTP que está sendo atendida.

response Response

Resposta da requisição HTTP que está sendo gerada.

Returns:

Resultado da ação ou o erro que ocorreu durante a sua execução.

Type
RouteResult

temporaryRedirect(url)

Cria uma resposta com status TEMPORARY_REDIRECT (307), indicando que o recurso da requisição foi temporariamente alterado para a URL informada.

Parameters:
Name Type Description
url string

Nova URL temporária do recurso da requisição.

Returns:
Type
RouteResult

Events


afterEvent

Evento emitido após a execução do método associado à ação de uma rota HTTP, mesmo que tenha ocorrido um erro durante a sua execução.

O seu uso é recomendado para fins de geração de logs ou para padronizar os resultados em um formato específico esperado pelo cliente da API HTTP.

Type: ControllerEvent
See:
Example
this.on('afterAction', function (evt) {
   const original = evt.result;
   evt.result = RouteResult()
     .withStatus(Status.OK)
     .withContent({
       success: !evt.error
       data: JSON.stringify(original.content)
     });
 });

beforeAction

Evento emitido antes da execução do método associado à ação de uma rota HTTP.

O seu uso é recomendado para tratamentos ou validações que devem ocorrer para todas as rotas de uma API, ou para implementar um mecanismo de autorização customizado alternativo ao modelo de autorização padrão do sistema.

Type: ControllerEvent
See:
Example
this.on('beforeAction', function (evt) {
   if (session.userKey == -1) {
     customAuthorization(evt.request.headers['x-user-token']);
   }
 });

error

Evento emitido se ocorrer um erro durante a execução do método associado à ação de uma rota HTTP.

O seu uso é recomendado para geração de logs ou para a geração de erros em um formato diferente do padrão do roteador HTTP, o qual expõe as propriedades do erro como propriedades de um objeto literal.

Observação: este evento irá capturar erros gerados nos eventos beforeAction e afterAction, portanto ele será executado após esses eventos.

Type: ControllerEvent
See:
Example
this.on('error', function (evt) {
   evt.result = RouteResult()
     .withStatus(Status.OK)
     .withContent({
       error: evt.error.message
     });
 });