Soy muy nuevo en node.js/express/postman, así que disculpe si esta pregunta es bastante novata. Tengo el siguiente código producido siguiendo un tutorial en línea. Usé Postman para probarlo. El problema es que, cuando agrego la línea app.use(express.json) , Postman no puede enviar la solicitud de publicación. Se atasca en "Enviando solicitud...". Si excluyo esa línea, las solicitudes "Obtener" funcionarán. Alguien sabe por qué... según este código. Esto es todo:
¡Gracias!
const Joi = require('joi'); // Put required modules at the top const express = require('express'); const app = express(); app.use(express.json); const courses = [ { id: 1, name: 'course1' }, { id: 2, name: 'course2' }, { id: 3, name: 'course3' }, ]; app.get('/', (req, res) => { res.send('Hello world!!!'); }); app.get('/api/courses', (req, res) => { res.send(courses); }); app.post('/api/courses', (req, res) => { const { error } = validateCourse(req.body); if (error) return res.status(400).send(results.error.details[0].message); const course = { id: courses.length + 1, name: req.body.name }; courses.push(course); res.send(course); // assigning the id on the server. return course to client }); app.get('/api/courses/:id', (req, res) => { const course = courses.find(c => c.id === parseInt(req.params.id)) if (!course) return res.status(404).send('The course with the given ID was not found'); res.send(course); }); app.put('/api/courses/:id', (req, res) => { const course = courses.find(c => c.id === parseInt(req.params.id)) if (!course) return res.status(404).send('The course with the given ID was not found'); const { error } = validateCourse(req.body); if (error) return res.status(400).send(results.error.details[0].message); course.name = req.body.name; res.send(course); }); app.delete('/api/courses/:id', (req, res) => { const course = courses.find(c => c.id === parseInt(req.params.id)) if (!course) return res.status(404).send('The course with the given ID was not found'); const index = courses.indexOf(course); courses.splice(index, 1); res.send(course); }) function validateCourse(course) { const schema = { name: Joi.string().min(3).required() }; return Joi.ValidationError(course, schema); } // PORT const port = 3000; app.listen(port, () => console.log(`listening on port ${port}...`));Su problema es el middleware json ( app.use(express.json); ), que requiere que devuelva JSON válido ( Content-Type: application/json ).
Obtuve su muestra ejecutándose, actualizándola a lo siguiente:
app.get('/', (req, res) => { res.json({msg: 'Hello world!!!'}); });Aquí hay una versión funcional: https://pastebin.com/06H6LCD2
Probar:
app.use(express.json({ extended: false }));