2017-03-05 68 views
0

我有以下簡單的代碼,發送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 

這意味着每個值永遠是字符串,我必須手動將它轉換在服務器端,以適當的類型。這個任務對嗎?這裏有什麼好的做法?

回答

1

它在內部使用JSON.stringify()。使用JSON.parse()

相關問題