我试图在我的koa-router中处理POST请求。不幸的是,每当我尝试使用我的表单发送数据时,我什么也得不到。我尝试过koa-bodyparser,那里没有运气。我使用Jade作为模板引擎。
router.js:
var jade = require('jade');
var router = require('koa-router')();
var bodyParser = require('koa-bodyparser');
exports.enableRouting = function(app){
app.use(bodyParser())
router.get('/game/questions', function *(next){
this.status = 200;
this.body = jade.renderFile('game_questions.jade');
});
router.post('/game/questions', function *(next){
console.log(this.request.body);
this.status = 200;
this.body = jade.renderFile('game_questions.jade');
});
app
.use(router.routes())
.use(router.allowedMethods());
}
和 game_questions.jade 的一部分:
form(method='post' id='New_Question_Form')
input(type='text', id='New_Question_Text')
input(type='submit' value='Add Question')
this.request.body
为空,this.request
返回:方法,网址和标头。任何帮助表示赞赏!
答案 0 :(得分:2)
如果有人在他们的搜索中发现了这一点,请允许我建议koa-body可以传递给一个帖子请求,如下:
var koa = require('koa');
var http = require('http');
var router = require('koa-router')();
var bodyParser = require('koa-body')();
router.post('/game/questions', bodyParser, function *(next){
console.log('\n------ post:/game/questions ------');
console.log(this.request.body);
this.status = 200;
this.body = 'some jade output for post requests';
yield(next);
});
startServerOne();
function startServerOne() {
var app = koa();
app.use(router.routes());
http.createServer(app.callback()).listen(8081);
console.log('Server 1 Port 8081');
}
但是如果将帖子数据发送到你说的/ game /问题会怎么样?让我们转向卷曲其无限的智慧。
curl --data "param1=value1&pa//localhost:8081/game/questions'
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Content-Length: 34
Date: Thu, 17 Dec 2015 21:24:58 GMT
Connection: keep-alive
some jade output for post requests
在日志控制台上:
------ post:/game/questions ------
{ param1: 'value1', param2: 'value2' }
当然,如果您的玉石不正确,身体解析器也无法拯救您。