使用postman请求/api/post-data接口时没有返回前面设置的req.body

来源:10-5 express中间件

慕雪5269978

2019-12-24

app.post('/api/post-data', (req, res, next) => {
    console.log('post api/post-data路由')
    console.log(req.body)
    res.json({
        errno: 0,
        data: req.body
    })
})

使用postman请求这个接口时没有返回前面设置的req.body,加了打印前面设置的那个也执行了,这里打印输出undefined。不知道是什么原因

写回答

3回答

慕雪5269978

提问者

2019-12-25

const express = require('express')

// http请求实例
const app = express()

// app.use((req, res, next) => {
//     console.log('请求开始...', req.method, req.url)
//     next()
// })

app.use((req, res, next) => {
    console.log('sss')
    setTimeout(() => {
        console.log('aaa')
        req.body = {
            a: 100,
            b: 200
        }
    })
    next()
})

app.post('/api/post-data', (req, res, next) => {
    console.log('post api/post-data路由')
    console.log(req.body)
    res.json({
        errno: 0,
        data: req.body
    })
})


app.use((req, res, next) => {
    console.log('处理404')
    res.json({
        errno: -1,
        msg: '404 not find'
    })
})

app.listen(3000, () => {
    console.log('server is running on port 3000')
})

老师,输出还是不对,终端打印信息如下:

server is running on port 3000
sss
post api/post-data路由
undefined
aaa


0
4
双越
回复
慕雪5269978
好的。再有问题再来提问。
2019-12-26
共4条回复

慕雪5269978

提问者

2019-12-25

前面设置req.body使用的是setTimeout来模拟异步处理,添加打印信息发现控制台打印的消息设置req.body是在/api/post-data这个接口处理完之后设置的值。不明白视频里setTimeout函数也没设置延迟时间但是为何会在之后,如果不使用setTimeout函数直接设置值请求接口则返回的是和视频里结果一样的


0
2
慕雪5269978
回复
双越
好的,了解了
2019-12-25
共2条回复

双越

2019-12-24

postman 返回的是什么?截图看下。

0
0

Node.js+Express+Koa2+Nest.js 开发服务端

从入门到实战,一站式掌握 Node.js+Express+Koa2

4051 学习 · 2006 问题

查看课程