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

图片描述

POST请求

补充:
图片描述

我把处理基本上都注释掉之后发现运行的顺序出了问题

写回答

3回答

双越

2020-02-11

暂时没看出啥问题。这样吧,你把你的代码简化一下,只要 req.on('data') 和 req.on('end') ,其他的什么都不要,简化到最简单,能少一行就别多一行。

这样再试试,如果还是不行,我再帮你调试一下。

0
5
双越
回复
kagura_kana
哈哈,这很正常。解决的问题多了,慢慢的就熟练了,也就快了。
2020-02-11
共5条回复

kagura_kana

提问者

2020-02-10

//img.mukewang.com/szimg/5e416e5f0915c76e07690399.jpg

是appliciation/json

0
0

双越

2020-02-10

在 getPostData 中,首先打印一下 req.headers['content-type'] 是啥?

0
1
kagura_kana
是appliciation/json
2020-02-10
共1条回复

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

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

4127 学习 · 2024 问题

查看课程