¡Gran admirador de Stackoverflow y esta es mi primera pregunta al respecto! Estoy trabajando en un proyecto javascript express y tratando de averiguar si puedo hacer esto bajo una solicitud de obtención. Me está costando entender esto
app.get("/test/:q1&:q2&:q3", (req, res) => { console.log(req.params) })Básicamente, cuando el usuario busca las siguientes rutas, quiero el siguiente resultado en req.params cuando se realizan estas solicitudes. Quiero mantenerlo bajo una solicitud de obtención si es posible.
PARA ACLARAR. El código anterior PUEDE cambiar para cumplir con los requisitos funcionales ABAJO. A continuación NO PUEDE cambiar
"http://localhost:3000/test/hello" ---> req.params will equal { q1: "hello" } "http://localhost:3000/test/hello&world" ---> req.params will equal { q1: "hello", q2: "world" } "http://localhost:3000/test/hello&world&foobar" ---> req.params will equal { q1: "hello", q2: "world", q3: "foobar" }Intenté usar el "?" en la consulta, pero parece que solo funciona en rutas nuevas seguidas de "/", no dentro de la misma ruta. Estoy pensando que tendré que ir con la solución rápida y sucia de hacer 2 solicitudes de obtención más para cada escenario. Actualmente, cuando intento ingresar "/test/hello&world" o "/test/hello", fallará y solo funcionará si tengo las 3 partes llenas.
¿Puedes probar esto?
app.get('/test/:string', (req, res) => { const str = req.params.string const params = str.split('&') .reduce((acc, curr, i) => ({ ...acc, [`q${i + 1}`]: curr }), {}) // params => { q1: 'hello', q2: 'world', q3: 'foobar' } })