Class: RouteSetDef

@nginstack/engine/lib/router/RouteSetDef~ RouteSetDef


new RouteSetDef()

Define um conjunto de rotas HTTP, que poderá estar associada a uma API HTTP.

Members


allowedOrigins :Array.<string>

Determina quais domínios podem acessar este conjunto de rotas. Por padrão, qualquer domínio poderá acessar. Esta propriedade é validada apenas por clientes HTTP que respeitam o protocolo CORS. Mais detalhes em https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS.

Type:
  • Array.<string>
Default Value:
  • ['*']

apiHelp :ResourceString

Explicação mais detalhada acerca da API disponibilizada por este conjunto de rotas. Deve ser utilizado em conjunto com #apiName.

Type:
  • ResourceString

apiName :string

Indica que este conjunto de rotas está associado a API informada. Essa informação é importante para as ferramentas de documentação, que agrupam as rotas pelo mesmo nome da API.

Type:
  • string

basePath :string

Caminho comum a todas as rotas definidas em #routes. Ele será prefixado a path</em de cada rota. Caso haja um RouteSetDef em routes, basePath será prefixado ao valor desta propriedade deste conjunto de rotas.

Type:
  • string

controller :string|number

Chave ou caminho do módulo que define o construtor do controlador que executará a ação indicada na rota. Caminhos na UFS devem ter o prefixo 'ufs:' e os da VFS o 'vfs:'. O arquivo indicado deve ter a estrutura de um módulo CommonJS. O construtor do controlador deve ser retornado por meio da propriedade module.exports.

Type:
  • string | number

debug :boolean

Indica que o Engine deve adicionar no log do sistema informações de depuração sobre a execução das rotas, como o trace das requisições e respostas geradas.

Type:
  • boolean

groupHelp :ResourceString

Explicação mais detalhada acerca do grupo de rotas definido por #groupName.

Type:
  • ResourceString

groupName :string

Indica que as rotas definidas em #routes devem ser agrupadas com o nome informado. Esta propriedade deve ser utilizada quando uma API define conjuntos de rotas que façam sentido de serem observadas como um recurso ou uma operação específica.

Type:
  • string
Example
module.exports = {
   apiName: 'Operação Requisição v1',
   apiHelp: new ResourceString(123456),
   requiresAuth: true,
   basePath: '/api/operacoes/v1',
   routes:[{
     groupName: 'Operação Requisição',
     groupHelp: new ResourceString(1234567),
     basePath: '/requisicao',
     controller: 378647746, //products/Custom/controllers/OperacaoRequisicao.ijs
     routes: [
       {method: 'GET', path: '', action: 'listar(request)'},
       {method: 'POST', path: '', action: 'criarOperacao(request)'},

       {method: 'GET', path: ':id', action: 'obterOperacao(id)'},
       {method: 'DELETE', path: ':id', action: 'excluirOperacao(id)'},
     ]
   }, {
     groupName: 'Operação Pedido ou Provisão',
     groupHelp: new ResourceString(12345678),
     basePath: '/pedido',
     controller: 380027549, //products/Custom/controllers/OperacaoPedido.ijs
     routes: [
       {method: 'GET', path: '', action: 'listar(request)'},
       {method: 'POST', path: '', action: 'criarOperacao(request)'},

       {method: 'GET', path: ':id', action: 'obterOperacao(id)'},
       {method: 'DELETE', path: ':id', action: 'excluirOperacao(id)'}
     ]
   }]
 };

realm :string|number

Indica o nome ou a chave da configuração do Realm HTTP que deve ser utilizado no atendimento desta rota. As configurações dos realms estão disponíveis em /Configuração/Realms.

Um Realm HTTP define um isolamento dos ambientes JavaScript e sessões de usuário. Um controlador em um determinado realm não compartilhará o ambiente JavaScript de um outro controlador definido em outro realm.

Defina um realm diferente do padrão quando observar que os recursos e scripts utilizados por um controlador serão muito diferentes do padrão de uso dos demais controladores ou quando for necessário um controle diferenciado do tempo de vida do ambiente JavaScript ou do tipo de ambiente (stateful ou stateless).

Type:
  • string | number

requiresAuth :boolean

Determina se as rotas exigem que o requisitante informe um usuário do sistema no cabeçalho Authorization, podendo ser informado um bearer token (OAuth2) ou o usuário e senha seguindo o formato de autorização básica do HTTP.
Caso a autenticação seja solicitada, o objeto session estará autenticado com o usuário indicado no token durante a execução do método do controlador.

Type:
  • boolean
See:
  • RouteDef#requiresAuth

routes :Array.<(RouteDef|RouteSetDef)>

Definições das rotas. Uma rota associa um caminho ao método de um controlador que será responsável por processar a requisição. Também poderá ser informado um outro conjunto de rotas RouteSetDef, permitindo que uma API defina vários grupos de rotas dentro de uma API. Mais detalhes do conceito de grupos, em #groupName.
Importante: quando um RouteSetDef é definido de forma aninhada em routes de outros, as propriedades não informadas serão herdadas da definição superior, exceto #basePath que será concatenado.

Type:
  • Array.<(RouteDef|RouteSetDef)>
See:
  • RouteDef
Example
// As rotas definidas pelos grupos "Operação Requisição" e "Operação Pedido ou Provisão" exigem
 // autenticação, pois esse comportamento foi definido no nível superior da declaração.
 module.exports = {
   apiName: 'Operação Requisição v1',
   apiHelp: new ResourceString(123456),
   requiresAuth: true,
   basePath: '/api/operacoes/v1',
   routes:[{
     groupName: 'Operação Requisição',
     basePath: '/requisicao',
     controller: 378647746, //products/Custom/controllers/OperacaoRequisicao.ijs
   }, {
     groupName: 'Operação Pedido ou Provisão',
     groupHelp: new ResourceString(12345678),
     basePath: '/pedido',
     controller: 380027549, //products/Custom/controllers/OperacaoPedido.ijs
   }]
 };

Methods


<static> isLike(obj)

Determina se o objeto informado tem uma estrutura similar a um RouteSetDef.

Parameters:
Name Type Description
obj Object

Objeto a ser verificado.

Returns:

Retorna true se o objeto tiver uma estrutura semelhante e puder ser processado como um conjunto de rotas.

Type
boolean