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

240
Vistas
Express.js, obteniendo el error 404 (No encontrado) para mi ruta recién agregada

Tengo algunos problemas al crear una segunda ruta en mi proyecto. Mientras que router.get("/getallrooms") funciona bien, router.post("/getroombyid") me da un mensaje 404 no encontrado:

 POST http://localhost:3000/book/api/rooms/getroombyid 404 (Not Found)

He adjuntado mi código de rutas, pantalla de reserva, donde intento usar esta ruta getroombyid y el código server.js . Con mucho gusto aceptaré cualquier sugerencia.

 const express = require('express'); const router = express.Router(); const Room = require('../models/room') router.get("/getallrooms", async(req, res) =>{ try{ const rooms = await Room.find({}) res.send(rooms) } catch(error){ return res.status(400).json({message: error}); } }); router.post("/getroombyid", async(req, res) => { const roomid = req.body.roomid try { const room = await Room.findOne({'_id' : req.body.roomid}) res.send(room) } catch (error) { return res.status(400).json({ message: error }); } }); module.exports = router

Pantalla de reserva

 import React, {useState, useEffect} from 'react' import axios from 'axios' function Bookingscreen({match}) { const [loading, setloading] = useState() const [error, seterror] = useState() const [room, setroom] = useState() useEffect(() => { try { setloading(true) async function gettingRoom() { const data = (await axios.post('./api/rooms/getroombyid', {roomid : match.params.roomid})).data setroom(data) setloading(false) } gettingRoom() } catch (error) { seterror(true) console.log(error) setloading(false) } }, []) return ( <div> <h1>Bookingscreen</h1> <h1>Room id = {match.params.roomid}</h1> </div> ) } export default Bookingscreen

servidor.js

 const express = require("express"); const app = express(); const dbConfig = require('./db') const roomsRoute = require('./routes/roomsRoute') app.use(express.json()) app.use('/api/rooms', roomsRoute) const port = process.env.PORT || 5000; app.listen(port, () => { console.log(`App listening on port ${port}`) });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema es causado por la siguiente línea, específicamente la parte ./api :

 const data = (await axios.post('./api/rooms/getroombyid', {roomid : match.params.roomid})).data

Lo que está haciendo es tener en cuenta su URL actual dentro del navegador, que asumo es /book , por lo que la solicitud final se realiza a:

 http://localhost:3000/book/api/rooms/getroombyid

Que no existe en su back-end. Cambia la linea de arriba por esta:

 const data = (await axios.post('/api/rooms/getroombyid', {roomid : match.params.roomid})).data
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