关于koa-bodyparser的问题
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的问题,请先讲一下在喷我,但我确实仔细想了,但就想弄个明白。
@dbit-xia 感谢回复,这个代码能正确跑通,我就是搞不懂为什么能拿到ctx.request.body,但是打印ctx.request这个对象却看不到body这个key值~
https://github.com/koajs/koa/blob/master/lib/request.js#L704
因为 request 的 inspect 方法被定制了
@atian25 非常感谢!之后我会花时间去看koa源码
Koa 源码一共 4 个文件,含注释也就 2000 行,其中 2 个文件还只是一堆简单的 getter 和 setter。 择时不如撞日吧。
@atian25 好的 今天就看, QaQ下次有问题我先看源码,看不懂再来社区提问,争取过段时间也能回答别人的问题。