ljharb/qs
Vedi su GitHubDifferent array parse behaviour of x-www-form-urlencoded between ExpressJS and rails
Open
#178 aperta il 11 nov 2016
bughelp wantedparse
Metriche repository
- Star
- (8015 star)
- Metriche merge PR
- (Merge medio 6g 22h) (2 PR mergiate in 30 g)
Descrizione
I use content-type: application/x-www-form-urlencoded to send POST request to backend server. The post body as follow:
listing[pictures][files][][name]=9ADDD7B1-FCFF-4538-916A-1E63DFB43A72&
listing[pictures][files][][name]=EFFE67B2-5D41-4B74-A33E-5963F54FAEC7&
listing[pictures][files][][name]=BBC9CB38-FE01-4F1A-AE37-7ED71F4B2CB5
In backend server, if I use ruby on rails, the POST will be parsed as follow:
"pictures"=>{
"files"=>[
{"name"=>"9ADDD7B1-FCFF-4538-916A-1E63DFB43A72"},
{"name"=>"EFFE67B2-5D41-4B74-A33E-5963F54FAEC7"},
{"name"=>"BBC9CB38-FE01-4F1A-AE37-7ED71F4B2CB5"}
]
}
This result is what I expected to be.
But, If I use nodeJS express and body-parser:
// parse application/json
app.use(bodyParser.json());
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
extended: true means that bodyParser will use qs to parse data.
The POST will be parsed as follow:
"pictures"=>{
"files"=>[
"name"=>[
"9ADDD7B1-FCFF-4538-916A-1E63DFB43A72",
"EFFE67B2-5D41-4B74-A33E-5963F54FAEC7",
"BBC9CB38-FE01-4F1A-AE37-7ED71F4B2CB5"
]
]
}