Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

420
Visualizações
¿Hay una manera fácil de mantener los parámetros de consulta en los redireccionamientos en NestJS?

Soy bastante nuevo en este tipo de cosas, por lo que agradezco cualquier consejo, especialmente si hay una mejor manera de resolver esto que lo que estoy buscando.

Estoy tratando de admitir un punto de conexión anterior al redirigirlo a un punto de conexión nuevo, y ambos puntos de conexión deberían admitir parámetros de consulta. Cada punto final vive en un controlador separado.

Ejemplo: quiero que /old-namespace/getStuff?foo=bar redirija a /new-namespace/getStuff?foo=bar sin reconstruir manualmente una cadena de consulta como señalan los documentos de Nest, porque los parámetros pueden ser dinámicos.

Mirando los documentos de NestJS , hay un práctico decorador @Redirect que puede usar en un punto final como este, para redirigir fácilmente la solicitud a una URL diferente:

 @Get('docs') @Redirect('https://docs.nestjs.com', 302) getDocs(@Query('version') version) { if (version && version === '5') { return { url: 'https://docs.nestjs.com/v5/' }; } }

Sin embargo, al usar esto, request.query se borra en la redirección (bastante seguro de que este es el comportamiento esperado). ¿Alguien tiene una solución mínimamente invasiva para esto? Probé la creación de middleware/interceptores/decoradores personalizados para sortear esto con diversos grados de éxito, pero eso parece una mano dura y desearía que hubiera una manera de agregar un parámetro adicional en el decorador @Redirect como retainQuery = true o alguna cosa.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Terminé usando la respuesta principal aquí: ¿Cómo reescribir la ruta de URL en Nestjs?

La primera respuesta de Ambroise Rabier sobre las reescrituras de nginx me indicó que buscara una solución de middleware simple, ya que no quería inyectar un servicio en varios lugares, ya que habrá bastantes pequeños redireccionamientos de los espacios de nombres antiguos a los nuevos.

En un módulo común:

 consumer .apply(RewriteApiEndpointMiddleware) .forRoutes('/')

En un software intermedio:

 import { Injectable, NestMiddleware } from '@nestjs/common'; @Injectable() export class RewriteApiEndpointMiddleware implements NestMiddleware { use(req: any, res: any, next: () => void) { // the linked answer replaced "api" but in my case I needed to send "app" requests somewhere else req.url = req.url.replace(/^\/app/, '/new-namespace'); next(); } }
over 4 years ago · Santiago Trujillo Relatório

0

Lo que necesitas se llama reescribir en nginx.

No sé si funciona, pero tal vez usted puede hacer eso?

 @Get('/old-namespace/getStuff') getStuff(@Query() query) { // Done ! getNewStuff(query); } @Get('/new-namespace/getStuff') getNewStuff(@Query() query) { }

Si no, siempre puedes hacer algo como:

 function handleGetNewStuff() { } @Get('/old-namespace/getStuff') getStuff(@Query() query) { handleGetNewStuff(query); } @Get('/new-namespace/getStuff') getNewStuff(@Query() query) { handleGetNewStuff(query); }

Sin embargo, si su problema es cambiar el enlace en el lado del usuario (y no solo para el enrutamiento interno), puede intentar (tampoco probado):

 @Get('/old-namespace/getStuff') getStuff(@Req() request, @Res() response) { const newURL = req.originalUrl.replace('old', 'new'); response.redirect(newURL); }

Recuerde que NestJS usa expressJS a continuación.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda