2015-07-19 76 views
1

我試圖處理我的koa路由器中的POST請求。不幸的是,每次我嘗試使用我的表單發送數據時,我什麼也得不到。我試過koa-bodyparser,沒有運氣。我使用Jade作爲模板引擎。Koa路由器和POST

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回報:方法,URL和報頭。任何幫助感謝!

+1

嘗試onerror選項https://github.com/koajs/bodyparser#options – monkey

+0

試過了 - 沒有錯誤。謝謝:) – jwitos

+0

沒有解決問題。儘管設法通過使用Socket.io來保存表單而不是使用POST發送來解決它。如果有人很好奇[這是github上的diff](https://github.com/jwitos/takismieszny/commit/a53e44b80ce474bcc30cda97cb8222ffeb666b51)我是怎麼做到的。 – jwitos

回答

2

如果任何人在他們的搜索絆倒在此,我建議KOA體可以傳遞給POST請求,像這樣:

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'); 
} 

但如果後期數據被髮送到/遊戲會發生什麼/你說的問題?讓我們轉而蜷縮其無限的智慧。

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' } 

和當然,如果你的玉石是不正確沒有任何機構解析器可以救你。