使用koa2 + koa-router ,但是获取不到post请求的request.body
小白请教,在'/'上进行表单提交发送 post 请求,但是'/link'返回的body中 request.body
是 {}
空对象,请问这是为什么呢?
const koa = require('koa')
const router = require('koa-router')()
const koaBody = require('koa-body')()
const bodyParser = require('koa-bodyparser')
const app = new koa()
app.use(bodyParser())
app.use(async (ctx, next) => {
const start = new Date()
await next()
const ms = new Date() - start
console.log(`${ctx.method} -> ${ctx.url} - ${ms}ms`)
})
router.get('/',async (ctx, next) => {
await next()
ctx.body = `<form action='/link' method='post'><input type="text" ><input type="submit" value="OK"></form>`
})
router.get('/hello/:name', async ctx => {
let name = ctx.params.name
ctx.body = `<h1>Hello, ${name}!</h1>`
})
app.use(router.routes())
router.post('/link', async (ctx, next) => {
ctx.response.body = {
code:'0',
description: 'ok',
result: ctx.request.body
}
})
// app.use(async ctx => {
// ctx.body = 'hello koa2'
// })
app.listen(3000)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
嗯
输入框要有name才可以
首先处理POST请求的body必须使用另一个中间件koa-bodyparser,你没有导入,另外你中间件的顺序有问题。
路由监听事件之后先注册bodyparser,再注册router.routes(),最后监听3000端口
使用koa-bodyparser就可以通过到ctx.request.body来获取post过来的参数了
参考:https://www.cnblogs.com/myzy/...
尴尬我也遇到这个问题了。