Wat doet `app.use(bodyParser.json())`?

Voor:

bodyParser.urlencoded({extended: ...})

mijn onderzoek toont me aan dat als extended: true, je geneste objecten kunt ontleden, of in het algemeen elk type. Als u echter extended: falseinstelt, kunt u alleen strings of arrays ontleden. Maar wat doet …

app.use(bodyParser.json())

bedoel je precies? Ik bedoel, ja… ik weet dat de documenten vermelden dat het json ontleedt. Maar ik ben nog steeds verward. Ik heb gemerkt dat toepassingen die extended: trueinstellen, bodyParser.json()helemaal NIET gebruiken. Maar toepassingen die extended: falsegebruiken, gebruiken meestal bodyParser.json(). Waarom is dit? Uiteindelijk kunnen beide applicaties json ontleden.

Ten tweede, wat is de aanbevolen aanpak?


Antwoord 1, autoriteit 100%

Ok, in tegenstelling tot wat ik eerder dacht, blijkt uit verder onderzoek dat extended: trueen app.use(bodyParser.json())samen kunnen worden gebruikt. Het is dus niet alleen extended: falsedie het gebruikt. De instructie app.use(bodyParser.json())moet onafhankelijk worden gebruikt, of u extended nu instelt als trueof false.

  • app.use(bodyParser.json())vertelt het systeem in feite dat json moet worden gebruikt.

  • bodyParser.urlencoded({extended: ...})vertelt het systeem in feite of je een eenvoudig algoritme wilt gebruiken voor ondiepe parsing (dwz false) of een complex algoritme voor diepe parsing die kunnen omgaan met geneste objecten (dwz waar).

Bekijk de documenten (bijv. https://expressjs.com/en/ guide/migrating-4.html) voor het voorbeeld.


Antwoord 2, autoriteit 8%

URL-codering en JSON-codering maken het beide mogelijk om een ​​(genest) object naar string te converteren, maar het formaat is anders. Een URL-gecodeerde tekenreeks is over het algemeen geen geldige JSON-tekenreeks.

De ene toepassing kan de ene coderingsmethode gebruiken en de andere de andere. Zolang ze de twee niet mengen, zal het werken.


Antwoord 3, autoriteit 5%

bodyParser.json retourneert middleware die alleen json parseert. Deze parser accepteert elke Unicode-codering van de body en ondersteunt het automatisch opblazen van gzip- en deflate-coderingen.

Een nieuw body-object dat de geparseerde gegevens bevat, wordt na de middleware (d.w.z. req.body) op het request-object ingevuld.

Other episodes