Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

325
Vistas
Cómo obtener valores de parámetros desde el punto final en express node.js

Soy nuevo en Express, así que me gustaría que me ayudaran. Necesito crear un enrutador para obtener algunos valores de un punto final que será el siguiente (no puedo modificar el punto final, es un requisito)

 ../house/1/us/ny&zipcode=12345

Lo intenté

 router.get("/:id/:country/:state")

y obtengo la identificación, el país y el estado con req.params Obtengo id=1 country=us y por el valor del estado, obtengo "ny&zipcode=12345" pero en realidad quiero obtener ambos

estado=ny código postal=12345

Probé con req.query pero no funciona o quizás lo estoy usando incorrectamente ¿Alguna sugerencia? Gracias por adelantado

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Codificación de URL

El primer problema (¿supongo?) en el código que veo es que estás usando & en lugar de ? para iniciar los parámetros de consulta; usamos & para separar pares de valores clave (como foo=bar&baz=hello ). Entonces, es posible que desee verificar eso una vez.

Si cambia el & a un ? , puede acceder a él usando req.query.<objectName> .

Otras Soluciones

También solo su edición, y para que funcione podemos trabajar con /house/:id/:country/:stateAndZip , necesitamos hacer algunos cambios.

Probablemente usaría este enfoque:

 const { stateAndZip } = req.params; const [ state, zipCode ] = stateAndZip.split( '&' ); // Here, state contains 'ny' and `zipCode` is of the work `zipcode=XXXXX`. const [ , formattedZipCode ] = zipCode.split( '=' ); // Or use https://nodejs.org/api/querystring.html // formattedZipCode is XXXXX.

Hay algunos problemas con esta solución; el primero es que esto supone que el zipcode es el primer argumento después & . Si desea una forma más genérica de hacerlo, hágamelo saber.

Una mejor solución

Tomando la solución de arriba y suponiendo que tenemos una lista desordenada donde el zipcode puede estar en cualquier lugar, podemos hacer lo siguiente:

 const qs = require( 'querystring' ); const { stateAndZip } = req.params; const [ state, queryParams ] = stateAndZip.split( '&' ); const decodedQueryParams = qs.parse( queryParams ); // decodedQueryParams will be an object with the property `zipcode`.

Un problema aquí es que es posible que tengamos un ampersand ( & ) en la propia URL, puede llevar esta solución un paso más allá asumiendo que todos los nombres de estado en su forma abreviada tienen solo 2 caracteres y se leen hasta el & , y analizan el cadena restante usando querystring .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Como se mencionó, su requisito es un poco extraño. Sin embargo, la definición de ruta del enrutador expressjs es muy elástica (busque la sección Rutas de Route paths en la documentación oficial ). Puedes definir una ruta con tu patrón así:

 /:id/:country/:state&zipcode=:zipcode

Pruebas rápidas

Utilice Express Route Tester , coloque /house/:id/:country/:state&zipcode=:zipcode en el campo Route y /house/1/us/ny&zipcode=12345 en el campo Path .

ingrese la descripción de la imagen aquí

Ejemplo completo

 import * as express from 'express'; const express = require("express"); const app = express(); const houseRouter = express.Router(); houseRouter.get("/:id/:country/:state&zipcode=:zipcode", (req) => { console.log(req.params); }); app.use('/house', houseRouter); app.listen(3000);

Para probar, llame a http://localhost:3000/house/1/us/ny&zipcode=12345 desde postman /navegador.

La consola registraría:

{ id: '1', país: 'nosotros', estado: 'ny', código postal: '12345' }

about 4 years ago · Juan Pablo Isaza Denunciar

0

El punto final debe ser /house/1/us/ny?zipcode=12345 y luego req.query.zipcode tendrá el valor del código postal. ? en vez de &.

Cuando se usa /house/1/us/ny&zipcode=12345, req.params considera ny&zipcode=12345 como el valor para el estado clave. ? finaliza el punto final y comienza los parámetros de consulta.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda