เนื้อหาเนื้อหา Sails.js เมื่อ Content-Type เป็น text/csv

ฉันจำเป็นต้องทำอะไรเป็นพิเศษเพื่อจัดการกับคำขอ 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...

person denishaskin    schedule 18.07.2015    source แหล่งที่มา
comment
โปรดทราบว่าการเรียงลำดับ bodyParserText ในรายการ middleware.order ก็ไม่ได้สร้างความแตกต่างเช่นกัน   -  person denishaskin    schedule 18.07.2015


คำตอบ (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

person denishaskin    schedule 19.07.2015