For:
bodyParser.urlencoded({extended: ...})
my research shows me that if extended: true
, then you can parse nested objects, or generally any type. However, if you set extended: false
, then you can only parse strings or arrays. But what does ...
app.use(bodyParser.json())
mean exactly? I mean, yes... I know the docs mention that it parses json. But I am still confused. I have noticed applications that set extended: true
do NOT use bodyParser.json()
at all. But applications that extended: false
tend to use bodyParser.json()
. Why is this? At the end of the day, both applications are able to parse json.
Secondly, which is the recommended approach?
Okay, contrary to what I previously thought, further research shows that extended: true
and app.use(bodyParser.json())
can be used together. So it is not only extended: false
that uses it. The statement app.use(bodyParser.json())
is to be used independently, whether you set extended as true
or false
.
app.use(bodyParser.json())
basically tells the system that you want json to be used.
bodyParser.urlencoded({extended: ...})
basically tells the system whether you want to use a simple algorithm for shallow parsing (i.e. false) or complex algorithm for deep parsing that can deal with nested objects (i.e. true).
Have a look at the docs (i.e. https://expressjs.com/en/guide/migrating-4.html) for the example.