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

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

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 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!