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 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)'}
     ]
   }]
 };

order :number

Ordem de pesquisa deste conjunto de rotas na busca de rotas realizada pelo roteador HTTP.

Valores menores serão avaliados primeiro e o roteador interrompe a busca ao encontrar uma rota que satisfaça um caminho de uma requisição, portanto uma rota de menor ordem se sobrepõem a uma rota de maior ordem para o mesmo caminho.

Caso esta definição faça parte de um conjunto de rotas (RouteSet), a ordem será utilizada para determinar a ordem de pesquisa em relação às demais rotas definidas em routes. Por padrão, a ordem será definida automaticamente com base na posição do array routes.

Caso não seja informado, será determinado automaticamente pela ordem dos arquivos definidos no diretório "Configuração/Rotas HTTP". Rotas definidas em pacotes JAZ terão ordem indefinida e por padrão serão avaliadas após as configurações existentes no diretório de configuração da Virtual File System.

Type:
  • number

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
   }]
 };

scope :string|Array.<string>

Lista separada por espaço dos escopos de autorização necessários para utilizar as rotas definidas em {#routes. Opcionalmente pode ser informado um array com os escopos, o qual será convertido em uma lista.

Veja module:@nginstack/engine/lib/router/RouteDef~RouteDef#scope para mais detalhes do formato desta propriedade.

Type:
  • string | Array.<string>

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