我是否需要执行任何特殊操作才能使用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...
答案 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
。