关于koa-bodyparser的问题
发布于 6 年前 作者 xxLion 3225 次浏览 来自 问答
const Koa = require('koa')
const app = new Koa()
const bodyParser = require('koa-bodyparser')
app.use(bodyParser())

app.use( async ( ctx ) => {

  if ( ctx.url === '/' && ctx.method === 'GET' ) {
    let html = `
      <h1>koa2 request post demo</h1>
      <form method="POST" action="/">
        <p>userName</p>
        <input name="userName" /><br/>
        <p>nickName</p>
        <input name="nickName" /><br/>
        <p>email</p>
        <input name="email" /><br/>
        <button type="submit">submit</button>
      </form>
    `
    ctx.body = html
  } else if ( ctx.url === '/' && ctx.method === 'POST' ) {
    let postData = ctx.request.body
    // 这里可以拿到ctx.request.body的值但是打印ctx.request对象下的key值为什么没有body?
    console.log(ctx.request)
    ctx.body = postData
  } else {
    ctx.body = '<h1>404!!! o(╯□╰)o</h1>'
  }
})

app.listen(3000, () => {
  console.log('[demo] request post is starting at port 3000')
})
7 回复

如果是个很low的问题,请先讲一下在喷我,但我确实仔细想了,但就想弄个明白。

@xxLion 只知道express里的bodyParse要指定解析哪种Content-type

来自酷炫的 CNodeMD

@dbit-xia 感谢回复,这个代码能正确跑通,我就是搞不懂为什么能拿到ctx.request.body,但是打印ctx.request这个对象却看不到body这个key值~

@atian25 非常感谢!之后我会花时间去看koa源码

Koa 源码一共 4 个文件,含注释也就 2000 行,其中 2 个文件还只是一堆简单的 getter 和 setter。 择时不如撞日吧。

@atian25 好的 今天就看, QaQ下次有问题我先看源码,看不懂再来社区提问,争取过段时间也能回答别人的问题。

回到顶部