Roteamento virtual

O roteamento virtual no thrust é usado para criar "curto circuitos" nos roteamentos físicos, ou seja, são usados para remapear uma rota de arquivo através de uma nova rota (que não existe fisicamente)

Seguindo o exemplo do roteamento físico:

|--- startup.js
|+-- app
|    +-- estoque
|        +-- produtos
|            +-- comestiveis
|                --- pereciveis.js
|--- brief.json
|--- config.json

Considere que o arquivo pereciveis.js representa um módulo com alguns endpoints, entre eles, um chamado getProdutosPereceiveis. Naturalmente, o bitcode de roteamento oficial do thrust permite que a URI /app/estoque/produtos/comestiveis/pereciveis/getProdutosPereciveis seja invocada.

Através do sistema de roteamento virtual é possível encurtar esta URL, para isso vamos alterar nosso arquivo principal adicionando router.addRoute para configurar a rota virtual.

let server = require('http')
let router = require('router')

router.addRoute('/prod/getProdutosPereciveis', '/app/estoque/produtos/comestiveis/pereciveis/getProdutosPereciveis')

server.createServer(8778, router)

Agora podemos acessar o mesmo endpoint através de:

  • /app/estoque/produtos/comestiveis/pereciveis/getProdutosPereciveis (rota física)
  • /prod/getProdutosPereciveis (rota virtual)

Seguindo este princípio precisaríamos criar uma rota virtual para cada endpoint dentro de cada módulo, o que nem sempre é o ideal, já que podemos ter dezenas de endpoints em cada módulo.

Para isso o sistema de roteamento também possui um sistema de mapeamento de módulos, assim, podemos criar uma rota virtual que redireciona para um módulo e todos os seus endpoints, para isso podemos fazer o seguinte:

let server = require('http')
let router = require('router')

router.addRoute('/@pereciveis', '/app/estoque/produtos/comestiveis/pereciveis')

server.createServer(8778, router)

Agora podemos acessar o mesmo endpoint através de:

  • /app/estoque/produtos/comestiveis/pereciveis/getProdutosPereciveis (rota física)
  • @pereciveis/getProdutosPereciveis (rota virtual)

Veja a seguir como restringir seus endpoints para que sejam executados apenas com determinados métodos HTTP.

results matching ""

    No results matching ""