当Content-Type为text / csv时,Sails.js正文内容

时间:2015-07-18 00:40:40

标签: node.js express sails.js

我是否需要执行任何特殊操作才能使用text {ish POST处理Content-Type次请求?

我需要处理text/csv但是当我到达控制器中的方法时,看起来Sails.js试图将主体解析为JSON:

postStuff: function(req, res) {
    sails.log.info("postStuff")
    sails.log.info(req.body)
    sails.log.info(req.headers['content-type']);
...etc...

给了我:

info: postStuff
info: {}
info: text/csv

我发现bodyParser中间件上的文档有点模糊。

FWIW,我也尝试在请求中将Content-Type设置为text/plain,但无济于事。

我还尝试明确添加一个文本bodyParser作为中间件,似乎没有任何效果:

http.js

module.exports.http = {
  bodyParserText: require('body-parser').text(),
  middleware: {
    order: [
      'startRequestTimer',
      'cookieParser',
      'session',
      'myRequestLogger',
      'bodyParser',
      'bodyParserText',
      'handleBodyParserError',
      'compress',
      'methodOverride',
      'poweredBy',
      '$custom',
      'router',
      'www',
      'favicon',
      '404',
      '500'
    ],
...etc...

1 个答案:

答案 0 :(得分:1)

哇,事实证明这很容易......但是由于缺乏框架的反馈而烦恼地调试很难。

https.js中,新中间件的元素必须位于middleware元素内...如果路线有意义:

module.exports.http = {
  // NOT HERE
  //  bodyParserText: require('body-parser').text(),
  middleware: {
    // HERE
    bodyParserText: require('body-parser').text(),
    order: [
      'startRequestTimer',
      'cookieParser',
      'session',
      'myRequestLogger',
      'bodyParser',
      'bodyParserText',
      'handleBodyParserError',
...etc...

如果sails.js(表达?)发出警告,本来不错,因为我假设它找不到bodyParserText