Isi badan Sails.js ketika Tipe Konten adalah teks/csv

Apakah saya perlu melakukan sesuatu yang khusus untuk menangani permintaan POST dengan Content-Type teks?

Saya perlu menangani text/csv tetapi ketika saya mendapatkan metode di pengontrol saya, sepertinya Sails.js mencoba mengurai isi sebagai JSON:

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

memberi saya:

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

Saya menemukan dokumentasi pada bodyParser middleware agak tidak jelas.

FWIW, saya juga mencoba mengatur Content-Type sebagai text/plain dalam permintaan, tetapi tidak berhasil.

Saya juga mencoba secara eksplisit menambahkan teks bodyParser sebagai middleware, yang sepertinya tidak berpengaruh apa pun:

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...

person denishaskin    schedule 18.07.2015    source sumber
comment
Perhatikan bahwa pengurutan bodyParserText dalam daftar middleware.order juga tidak membuat perbedaan.   -  person denishaskin    schedule 18.07.2015


Jawaban (1)


Wow, ternyata ini mudah... tapi sangat sulit untuk di-debug karena kurangnya feedback dari framework.

Di https.js, elemen untuk middleware baru harus berada di dalam elemen middleware... yang tentunya masuk akal:

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...

Alangkah baiknya jika Sails.js (Express?) memberikan peringatan, karena saya berasumsi tidak dapat menemukan bodyParserText.

person denishaskin    schedule 19.07.2015