我想發送JSON參數到我的服務器並使用json.Decoder解析它們。我讀過你應該能夠從request.Body屬性中獲取查詢參數。以下是我的服務器代碼:Golang淨/ http請求身體總是空
func stepHandler(res http.ResponseWriter, req *http.Request) {
var v interface{}
err := json.NewDecoder(req.Body).Decode(&v)
if err != nil {
// handle error
}
log.Println(v)
}
每到這時,我看到2014/12/26 22:49:23 <nil>
(DIFF時間戳,當然)。我的客戶端AJAX調用如下:
$.ajax({
url: "/step",
method: "get",
data: {
steps: $("#step-size").val(),
direction: $("#step-forward").prop("checked") ? 1 : -1,
cells: JSON.stringify(painted)
},
success: function (data) {
painted = data;
redraw();
},
error: function (xhr) {
console.log(xhr);
}
});
被髮送的代碼示例網址:
http://localhost:5000/?steps=1&direction=1&cells=%5B%7B%22row%22%3A11%2C%22column%22%3A15%7D%2C%7B%22row%22%3A12%2C%22column%22%3A15%7D%5D
在PARAMS一個更好看:
{
steps: "1",
direction: "1",
cells: "[{"row":11,"column":15},{"row":12,"column":15}]"
}
我有試過GET和POST請求。
爲什麼我的req.Body從不解碼?如果我嘗試單獨打印req.Body,我也會看到零。
在我看來'req.Body'確實是空的 - 那麼爲什麼不調用'req.ParseForm()',然後使用'req.Form'呢?是什麼讓你覺得'Body'會以某種方式得到在請求的主體中肯定不是**的東西(查詢參數)? –
我似乎有什麼req.Body引用的誤解。 req.Form給了我一張地圖 - 有什麼方法可以自動將查詢字符串解組到一個對象中嗎? –
@AlexMartelli,我用你的解決方案去了。如果您創建答案,我可以將其標記爲解決此問題的答案。非常感謝! –