Synthの最新版ではbodyParserがSynthソースコード内から生成されるひな形内に移動しています。
それによって使用方法が違うので、それのメモです。
back/resources/account/post.coffee
exports.postRegist = (params)->
console.log params
result =
result: "successss"
post: params
return result
一行目exports.postRegist = (params)->
の引数である括弧内にほしい文字列を入れたらデータがとれます。
つまり、
(params, req, res)
と(req, params, res)
でコードの動作に差はありません。
仕組みとしては、back/service/params.js
でparams
と言うパラメータをバインドするようになっており、
params.js
var _ = require('lodash');
var Promise = require('bluebird');
var bodyParser = Promise.promisify(require('body-parser').json());
exports.params = function (req, res) {
// Combines the three sources of parameters into one, and return them in one object
// Similar to how Rails and various other frameworks do it
return bodyParser(req, res).then(function () {
return _.merge({}, req.query, req.params, req.body);
});
};
このように、今までExpressでは分散されていたreq.query, req.params, req.body
がマージされた状態で取得することができます。
それによって、何も考えずにGETとPOSTの両方で同じコードによってパラメータを取得することが可能です。
Synthのバージョンを上げた事でPOSTの値が取得できなくなったため、私はこれによって小3時間は悩みました。
結局最新のSynthでテンプレートを作りなおして差分を適応した所、このようになっていたので、私のような犠牲者がこれ以上増えないことを祈って書きました。
Synthは実用性は高そうですが、現状実用的に使うにはまだ早いですね。