Tengo esta ruta de usuario
const express = require('express'); const router = express.Router(); const { GetAll, } = require('../areas/directory/controllers/usercontroller'); router.route('/getall?:username&:email').get(GetAll); module.exports = router;Cuando intento acceder a la URL en Postman de esta manera: http://localhost:5000/api/user/getall?username=nameone&email=emailone
Recibo este error: No se puede OBTENER /api/usuario/getall
Pero, si lo cambio a
router.route('/getall/:username&:email').get(GetAll);y acceda a la URL en Postman de esta manera: http://localhost:5000/api/user/getall/username=nameone&email=emailone
funciona.
Por otro lado, incluso si funciona, no puedo obtener el valor de mi variable.
var username = req.params.username;devolverá username=nameone en su lugar.
Para http://localhost:5000/api/user/getall?username=nameone&email=emailone funcione, debe cambiar
router.route('/getall?:username&:email').get(GetAll);a
"router.route('/getall').get(GetAll);" y use req.query.username para acceder al valor del parámetro de consulta de nombre de usuario y req.query.email para acceder al valor del parámetro de consulta de correo electrónico.
Después de realizar estos cambios, puede llamar a http://localhost:5000/api/user/getall?username=nameone&email=emailone en Postman, podrá ver el valor del nombre de username y el email en su código.
Esto se debe a que no necesita especificar los parámetros de consulta en la ruta, como ?:username en router.route('getall') .
Editar: agregar algunos detalles más sobre la ruta y la consulta
Consulte las 2 soluciones principales para esta pregunta para obtener más información sobre la ruta y la consulta y por qué debe cambiar su código de la manera que mencioné anteriormente: aquí está el enlace .
Motivo del error...
En realidad, lo que está tratando de hacer se llama paso de consulta en el resto de la API.
Pero estás tratando de acceder a ellos como parámetros .
solución 💖
sigue los pasos para acceder a las consultas
**Para pasar los datos usando ? en la solicitud de API debería ser así, puede tener múltiples objetos de consulta
http://localhost:5000/getall?email='email'&&password='password'Acceda a la consulta en la aplicación express como esta
app.post('/getall', (req, res) => { const { email, password } = req.query return res.status(200).json({ email, password }) })El req.query contiene los datos que intenta pasar throw ? y luego consultar propiedades
La respuesta del código anterior sería así
{ "email": "'email'", "password": "'password'" }No debe proporcionar parámetros de consulta en la URL. Entonces, para express, la URL debe ser solo /getall y en su código accede a esas variables usando req.params.whatever_query_parameter