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

259
Views
NodeJS + Express: el servidor no puede resolver las solicitudes GET, PUT, POST o DELETE (Estado 404)

server.js

 const express = require('express') const dotenv = require('dotenv').config() const port = process.env.PORT ||9999 const goals = require('./routes/goalRoutes') const app = express() app.use('/api/goals', goals) app.listen(port, () => console.log(`Server started on port ${port}`))

goalRoutes.js define una ruta api/goals

 const express = require('express') const router = express.Router() const { createGoal, getGoals, updateGoal, deleteGoal, } = require('../controllers/goalController') router.route('/').post(createGoal).get(getGoals) router.route('/:id').put(updateGoal).delete(deleteGoal) module.exports = router

goalController.js da funcionalidad a esa ruta

 //@desc Create goal //@route POST /api/goals //@access Private const createGoal = (err, req, res, next) => { res.status(200).json({message: "Create goal"}) } //@desc Get goals //@route GET /api/goals //@access Private const getGoals = (err, req, res, next) => { res.status(200).json({message: "Read goals"}) } //@desc Update goal //@route PUT /api/goals:id //@access Private const updateGoal = (err, req, res, next) => { res.status(200).json({message: `Update this goal: ${req.params.id}`}) } //@desc Get goals //@route DELETE /api/goal/:id //@access Private const deleteGoal = (err, req, res, next) => { res.status(200).json({message: `Delete this goal: ${req.params.id}`}) } module.exports = { createGoal, getGoals, updateGoal, deleteGoal, }

Creé una ruta (pensada como /api/goals ) y controladores para esa ruta. Luego usé los controladores que se encuentran en goalController.js para manejar las solicitudes GET, PUT, POST y DELETE y las conecté a goalRoutes.js .

Usando Postman para realizar pruebas, solo puedo resolver estas solicitudes con un estado 404.

Mi proceso de pensamiento inicial fue que no importé correctamente las funciones del controlador en goalRoutes.js , pero parece que las exporté como un objeto muy bien y Node no parece tener ningún problema con nada en el tiempo de ejecución.

Solía tener el cuerpo de las funciones de los controladores dentro de las funciones de devolución de llamada de router.get , router.post , router.put y router.delete , pero eso era realmente complicado. Preferiría fuertemente no volver a ese lío.

Estoy en una pérdida. ¿Qué detiene las funciones de devolución de llamada de router.route para usar las funciones del controlador? ¿Por qué Postman recibe 404?

Me disculpo si mi terminología apesta. Soy un principiante total en Javascript.

about 4 years ago · Santiago Gelvez
2 answers
Answer question

0

Ha registrado todos sus controladores como middleware de manejo de errores .

Defina funciones de middleware de manejo de errores de la misma manera que otras funciones de middleware, excepto que las funciones de manejo de errores tienen cuatro argumentos en lugar de tres: (err, req, res, next)

Eliminar los primeros parámetros de err de cada uno de ellos

 const createGoal = (req, res, next) => { res.json({message: "Create goal"}) } const getGoals = (req, res, next) => { res.json({message: "Read goals"}) } const updateGoal = (req, res, next) => { res.json({message: `Update this goal: ${req.params.id}`}) } const deleteGoal = (req, res, next) => { res.json({message: `Delete this goal: ${req.params.id}`}) }

FYI, el estado de respuesta predeterminado cuando se usa res.json() es 200.

about 4 years ago · Santiago Gelvez Report

0

si usa la importación del módulo nodejs, intente implementar esto en su código, funciona

 export default ()=> { const app = Router() RolesRoute(app) auth(app) FlightRoute(app) MaintenanceRoute(app) Books(app) app.use('/user',UserRoute()) app.use('/engineer', EngineerRoute()) app.use('/instructor', InstructorRoute()) return app }

Rutas de autenticación

 import { Router } from 'express' import {AuthValidator} from "../../../lib/validator"; import AuthController from "../../../controllers/auth.controller"; import {isAdmin, isAuth} from "../../../lib/middleware/auth"; const route = Router(); export default (app)=> { app.use('/auth', route); /** * Sign in */ route.post("/signIn", AuthValidator.signInValidator, AuthController.signIn) }
about 4 years ago · Santiago Gelvez 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!