POST发出后无法进入req.on('data')中
来源:5-11 开发路由(删除博客路由和登录路由)
kagura_kana
2020-02-10
const handleBlogRouter = require('./src/router/blog')
const handleUserRouter = require('./src/router/user')
const querystring = require('querystring')
const serverHandle = (req, res) => {
//获取path
const url = req.url
req.path = url.split('?')[0]
req.query = querystring.parse(url.split('?')[1])
const getPostData = (req) => {
const promise = new Promise((resolve, reject) => {
if (req.method === 'POST' && req.headers['content-type'] === 'application/json') {
let postData = ''
req.on('data', (trunk) => {
//这里没有进去
console.log('get some data')
postData += trunk.toString()
})
req.on('end', () => {
if (!postData) {
resolve({})
return
}
//将postData转化为对象格式
resolve(JSON.parse(postData))
})
}
else {
resolve({})
}
})
return promise
}
// 设置返回格式为 JSON
res.setHeader('Content-type', 'application/json')
getPostData(req)
.then(postData => {
//将postdata放入req
req._body = postData
})
//处理blog路由
const blogData = handleBlogRouter(req, res)
if (blogData) {
res.end(
JSON.stringify(blogData)
)
return
}
//处理user路由
const userData = handleUserRouter(req, res)
if (userData) {
res.end(
JSON.stringify(userData)
)
return
}
res.writeHead(404, { 'Content-type': 'text/plain' })
res.write('404 NOT FOUND')
res.end()
}
module.exports = serverHandle


补充:
我把处理基本上都注释掉之后发现运行的顺序出了问题
写回答
3回答
-
双越
2020-02-11
暂时没看出啥问题。这样吧,你把你的代码简化一下,只要 req.on('data') 和 req.on('end') ,其他的什么都不要,简化到最简单,能少一行就别多一行。
这样再试试,如果还是不行,我再帮你调试一下。
052020-02-11 -
kagura_kana
提问者
2020-02-10

是appliciation/json
00 -
双越
2020-02-10
在 getPostData 中,首先打印一下 req.headers['content-type'] 是啥?
012020-02-10
相似问题
