2015-03-20 14 views
15

body-parser'un geçerli sürümünde, bodyParser.urlencoded() kullanıldığında extended seçeneği gereklidir. README, bu açıklıyor:gövde ayrıştırıcı - genişletilmiş seçenek (qs vs querystring)

genişletilmiş bir seçenek querystring kütüphanesinden (yanlış) veya qs kütüphanesinden (doğru) ile URL olarak kodlanmış veriyi ayrıştırma arasında seçim yapmanızı sağlar.

[...] true

Varsayılan ancak varsayılan kullanarak kullanımdan kaldırıldı. Lütfen qs ve querystring arasındaki farkı araştırın ve uygun ayarı seçin.

Bu konuda yardımcı veya özel bilgi bulamadık. Sadece kullanımdan kaldırılmış bir node-querystring buldum.

Bu seçenek her zaman doğru mu?

cevap

28

Bu iletinin nedeni, body-parser'un about to change default value for extended from true to false olmasıdır.

Genişletilmiş protokol, x-www-form-urlencoded verilerini ayrıştırmak için qs library kullanır. qs'un ana avantajı, herhangi bir json benzeri veri yapısını serileştirebilen çok güçlü serileştirme/serileştirme algoritması kullanmasıdır.

Ancak web tarayıcıları normal olarak bu protokolü kullanmazlar, çünkü x-www-form-urlencoded düz html formlarını serileştirmek için tasarlanmıştır. Yine de, ajax kullanarak zengin veri yapıları gönderecekseniz kullanışlı olabilir. Form verisini serileştirmek için tüm web tarayıcıları tarafından kullanılan temel serileştirme/serileştirme algoritmasını

10 sağlar. Bu temel algoritma, uzatılmış olandan çok daha basit olmakla birlikte, düz veri yapıları ile sınırlıdır.

Her iki algoritma da düz verilerle tam olarak aynı şekilde çalışır.

Her iki algoritmanın artılarını ve eksilerini öğrendiğinizde, hangisinin uygulamanıza daha uygun olduğuna karar vermeniz size kalmış.

+1

teşekkürler bir demet. Umarım sadece googling de kötü değilim ve bu sadece bir başkasının yardımcı olacaktır –

+2

sadece genişletilmiş: yanlış "2D diziler berbat yorumlamak gibi :( – woojoo666

+2

@ woojoo666 çünkü temel serileştirme/serileştirme algoritması iç içe veri yapıları desteklemez. –