我有以下簡單的代碼,發送POST請求與快遞服務器:表達得到的所有值從角POST請求字符串
$http.post('/blah', {
boolean: true,
stringBoolean: 'true',
number: 213,
stringNubmer: '44444444',
string: 'adssd',
arrayNumber: [1, 2, 3, 4],
arrayBoolean: [true, false, "true", "false"],
});
,並在服務器端解決此線:
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
app.post('/blah', (req, res)=>{
console.log(req.body)
})
在控制檯輸出客戶端發送請求(對鉻和Firefox測試)之後將與所有的值作爲字符串:
{ boolean: 'true',
stringBoolean: 'true',
number: '213',
stringNubmer: '44444444',
string: 'adssd',
arrayNumber: [ '1', '2', '3', '4' ],
arrayBoolean: [ 'true', 'false', 'true', 'false' ] }
然後我用郵差相同的數據結構發送到服務器:
{ 「布爾」:真實, 「stringBoolean」: 「真」, 「數字」:213, 「stringNubmer」: 「44444444」, 「串」: 「adssd」, 「arrayNumber」:[1,2,3,4], 「arrayBoolean」:[TRUE,FALSE, 「真」, 「假」] }
但這我有控制檯中的數字和布爾值:
{布爾:真, 條帶gBoolean: '真', 號:213, stringNubmer: '44444444', 字符串: 'adssd', arrayNumber:[1,2,3,4], arrayBoolean:[TRUE,FALSE, '真', '假']}
似乎有棱角做窗簾後面的一些約定。我怎樣才能避免這種情況,並獲得正確的值類型發送到服務器?
UPDATE: 在丁目控制檯,我可以看到請求主體以原始格式至極這個樣子的:
boolean=true&stringBoolean=true&number=213&stringNubmer=44444444&string=adssd&arrayNumber%5B0%5D=1&arrayNumber%5B1%5D=2&arrayNumber%5B2%5D=3&arrayNumber%5B3%5D=4&arrayBoolean%5B0%5D=true&arrayBoolean%5B1%5D=false&arrayBoolean%5B2%5D=true&arrayBoolean%5B3%5D=false
這意味着每個值永遠是字符串,我必須手動將它轉換在服務器端,以適當的類型。這個任務對嗎?這裏有什麼好的做法?