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.