рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рдкрддреНрд░ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рд╣реИред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмреБрд░рд╛ рд╣реИ, рдпрд╣ рдлреЙрд░реНрдо рд╕реЗ рдЧреБрдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
рдореИрдВ рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдПрдХ рд╕рд░рдгреА рд░рдЦрдиреЗ рд╡рд╛рд▓реА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╣рд░ рдмрд╛рд░ рдЬрдм рд╕рд░рдгреА рдЦрд╛рд▓реА рд╣реЛрддреА рд╣реИ рддреЛ рдПрдХ MissingPropertyError рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЧрд▓рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЦрд╛рд▓реА рд╕рд░рдгреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдореВрд▓реНрдп рд░рдЦрддреА рд╣реИред
const request = require( 'request' )
const bodyParser = require('body-parser')
const app = require('express')()
app.use( bodyParser.json() )
app.use( bodyParser.urlencoded( { extended: true } ) )
app.post('/', function( req, res ){
console.log( 'received:', req.body )
res.send('ok')
})
app.listen( 53153 )
const req = {
url: 'http://localhost:53153',
method: 'POST',
headers: {
'Content-Type' : 'application/x-www-form-urlencoded'
},
form: {
emptyArray: [],
filledArray: [{something:[]}]
}
}
console.log( 'sending:', req )
request( req , function( err, httpResponse, body ){
process.exit(0)
})
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреНрд░реЗрд╖рдг рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡реИрдз рдЬреЗрд╕рди рд╣реИ
$ node index.js
sending: { url: 'http://localhost:53153',
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
form: { emptyArray: [], filledArray: [ { something: [] } ] }
received: { emptyArray: [], filledArray: [ { something: [] } ] }
рдкреНрд░рд╛рдкреНрдд рд╡рд╕реНрддреБ рдХреЛ рдПрдХ рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд╡рд╛рдпрд░рд╢рд░реНрдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╕рд╛рдордЧреНрд░реА-рд▓рдВрдмрд╛рдИ рднреЗрдЬреА рдЬрд╛ рд░рд╣реА рд╣реИ 0.
$ node index.js
sending: { url: 'http://localhost:53153',
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
form: { emptyArray: [], filledArray: [ { something: [] } ] }
received: {}
рд╕рд░рдгреА рдореЗрдВ рдЕрд╢рдХреНрдд рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ:
$ node index.js
sending: { url: 'http://localhost:53153',
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
form: { emptyArray: [ null ], filledArray: [ { something: [ null ] } ] }
received: { emptyArray: [ '' ], filledArray: [ { something: [ '' ] } ] }
рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ:
$ node index.js
sending: { url: 'http://localhost:53153',
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
form: { emptyArray: [ undefined ], filledArray: [ { something: [ undefined ] } ] }
received: {}
| рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ | рд╕рдВрд╕реНрдХрд░рдг
| ---------------- | --------
| рдЕрдиреБрд░реЛрдз | 2.81.0
| рдиреЛрдб | 8.3.0
| рдПрдирдкреАрдПрдо | 5.1.0
| рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо | рдЙрдмрдВрдЯреВ 16.04.2 рдПрд▓рдЯреАрдПрд╕
рддреЛ, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЬрдм рдЖрдк 'рдлреЙрд░реНрдо' рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред JSON рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬрд┐рд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рд╡рд╣ рдЦрд╛рд▓реА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИред рдЖрдкрдХреЛ 'рдлреЙрд░реНрдо' рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп 'рдмреЙрдбреА' рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдФрд░ JSON.stringify рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдиреЛрдЯ: рдЖрдкрдХреЛ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдХрд░рдиреА рдкрдбрд╝ рд╕рдХрддреА рд╣реИ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рдЬреЗрд╕рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
{
url: 'http://localhost:53153',
method: 'POST',
headers: { 'Content-Type': 'application/json'},
body: JSON.stringify({ emptyArray: [], filledArray: [ { something: [] } ] })
}
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЗрдирдкреБрдЯ рдирд╣реАрдВ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрддреНрддрд░ рдЕрдорд╛рдиреНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИред рдЬрдм рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╢реНрди "рдПрдкреНрд▓рд┐рдХреЗрд╢рди/x-www-form-urlencoded" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рддреЛ рд╣рдо "рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рдЬреЗрд╕рди" рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдХреНрдпреЛрдВ рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рд╣реЛ рд░рд╣реА рд╣реИ рд▓реЗрдХрд┐рди рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рдЦрд╛рд▓реА рд╕рд░рдгрд┐рдпрд╛рдБ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдВрдЧреА рдФрд░ url-рдПрдиреНрдХреЛрдбреЗрдб-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХреБрдЫ рднреА 'рд╢реВрдиреНрдп' рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рдХрд╛ рдПрдХ рдЬреЗрд╕рди:
{
results: {
arr1: [],
arr2: undefined,
arr3: null,
foo: {
arr4: []
}
}
}
рдХреЗрд╡рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдпреВрдЖрд░рдПрд▓ рджреЗрдЧрд╛
"?results%5Barr3%5D="
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЗрдирдкреБрдЯ рдирд╣реАрдВ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрддреНрддрд░ рдЕрдорд╛рдиреНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИред рдЬрдм рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╢реНрди "рдПрдкреНрд▓рд┐рдХреЗрд╢рди/x-www-form-urlencoded" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рддреЛ рд╣рдо "рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рдЬреЗрд╕рди" рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдХреНрдпреЛрдВ рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рд╣реЛ рд░рд╣реА рд╣реИ рд▓реЗрдХрд┐рди рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рдЦрд╛рд▓реА рд╕рд░рдгрд┐рдпрд╛рдБ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдВрдЧреА рдФрд░ url-рдПрдиреНрдХреЛрдбреЗрдб-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХреБрдЫ рднреА 'рд╢реВрдиреНрдп' рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рдХрд╛ рдПрдХ рдЬреЗрд╕рди:
{ results: { arr1: [], arr2: undefined, arr3: null, foo: { arr4: [] } } }
рдХреЗрд╡рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдпреВрдЖрд░рдПрд▓ рджреЗрдЧрд╛
"?results%5Barr3%5D="