在使用 koa2 的中間件 koa-bodyparser 解析客戶端發來的 json 字符串時,發現解析異常,分析後發現,這鍋 koa 不背,是發送 post 請求的問題。
【發送表單】
$.ajax({ type: "post", url: '/dosomething', data: {'a':'A', 'b':1, 'c': true}, success: function (data) { // TODO }, error: function () { // TODO } });
此時,http 請求頭裏面
Content-Type: application/x-www-form-urlencoded
http 請求的 body,
a=A&b=1&c=true
這種情況下,服務端通常會把所有參數的值解析爲字符串。
【發送 json 字符串】
$.ajax({ type: "post", url: '/dosomething', data: JSON.stringify({'a':'A', 'b':1, 'c': true}), contentType: 'application/json', // 這句很重要 success: function (data) { // TODO }, error: function () { // TODO } });
此時,http 請求頭裏面
Content-Type: application/json
http 請求的 body,
{"a":"A","b":1,"c":true}
這種情況下,服務端可以分別解析得到字符串、數字、布爾類型的參數。
*** walker ***