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

238
Views
Express: req.query siempre está vacío

Tengo un archivo que se ve más o menos así:

 const express = require('express'), cookieParser = require('cookie-parser'), http = require('http'), path = require('path'), bodyParser = require('body-parser'), app = express(), server = http.createServer(app); app.use(bodyParser.urlencoded({extended: true})); app.use(express.static(path.join(__dirname,'./pub'))); app.use(cookieParser()); app.get('/', (req,res) => { res.sendFile(path.join(__dirname,'./index.html')); }); app.post('/test', (req, res) => { console.log(req.query); //returns empty object even though it shouldn't // does other stuff here }); server.listen(3000, function() { console.log('server is listening on port: 3000'); });

Llamar a foo.bar/test.html?query=foobar devuelve un formulario de inicio de sesión html que envía la solicitud a la ruta /test al enviar, y espero que el resultado de la consola.log anterior sea { consulta: "foobar} , pero está vacío.

Todo lo demás en la aplicación funciona según lo previsto (la solicitud de inicio de sesión, guardar la sesión, etc.) con la excepción de la cadena de consulta.

El formulario de solicitud:

 <!DOCTYPE html> <html lang = "en"> <head> <meta charset = "UTF-8"> <title>Login</title> </head> <body> <form action="/test" method="POST"> <fieldset> <label for="email">Email</label> <input type ="email" id="email" name="email" placeholder="abc@example.com" required> <label for="password">Password</label> <input type="password" id="password" name="password" required> <button type ="submit">Submit</button> </fieldset> </form> </body> </html>

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Al realizar una solicitud mediante un formulario html , se puede acceder a los accesorios mediante req.body . Los datos no se envían mediante una cadena de querystring (por lo que no se agregan a la URL), sino que se agregan a la carga útil de la solicitud.

Aquí hay un código para leer los datos de la solicitud.

 app.post('/test', (req, res) => { console.log('in login:') console.log(JSON.stringify(req.body)); // use req.body since there's no querystring. res.status(200).send('Login succeeded for user ' + req.body.email) });
about 4 years ago · Juan Pablo Isaza Report

0

Estas son las posibles soluciones que puede probar:

Asegúrese de usar el método POST cuando pruebe la API, ya que ha usado el método POST en la ruta.

Además, la URL de la API debe tener el formato http://localhost:3000/user?name=Karliah . Esto debería imprimir { name : 'Karliah'}

about 4 years ago · Juan Pablo Isaza Report

0

 app.get('/test', (req,res) => { app.set('source', req.query.source); res.sendFile(path.join(__dirname,'./pub/test.html')); });

Insertar esto en el archivo mencionado en la pregunta agrega una variable de "fuente" a la que se puede acceder en la solicitud POST:

 app.post('/test', (req, res) => { console.log(req.app.get('source')); //returns the value // does other stuff here });

La URL a la que llamo ya no usa el .html: antes: foo.bar/test.html?source=123 después: foo.bar/test?source=123

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!