Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

320
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!