LoginSignup
1
1

More than 5 years have passed since last update.

Synth@0.5.3でPOST|GETのパラメータの取り方が変更になったメモ

Last updated at Posted at 2014-08-17

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.jsparamsと言うパラメータをバインドするようになっており、

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は実用性は高そうですが、現状実用的に使うにはまだ早いですね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1