JSON 인수를 내 서버로 보내고 json.Decoder를 사용하여 구문 분석하려고합니다. request.Body 속성에서 쿼리 매개 변수를 가져올 수 있어야한다고 읽었습니다.Golang net/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)
}
때마다, 나는 (물론, DIFF 타임 스탬프) 2014/12/26 22:49:23 <nil>
참조 : 다음은 내 서버 코드입니다.
$.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);
}
});
전송되는 어떤 URL의 예 :
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}]"
}
내가 함께 시도 내 클라이언트 측 AJAX 호출은 다음과 같다 GET 및 POST 요청.
왜 내 req.Body가 해독되지 않습니까? req.Body 만 인쇄하려고하면 nil도 보입니다.
'req.Body'는 실제로 비어 있습니다. 그래서'req.ParseForm()'을 호출하고 대신'req.Form'을 사용하십시오. 'Body'가 어떻게 든 요청의 본문에 **없는 ** 쿼리 매개 변수를 얻을 것이라는 인상을주었습니다. –
나는 req.Body가 참조한 것의 오해가있는 것 같았다. req.Form이 나에게지도를 준다. 쿼리 문자열을 객체로 자동으로 비 정렬 화하는 방법이 있는가? –
@AlexMartelli, 나는 당신의 해결책을 찾아갔습니다. 답변을 만들면이 질문의 해결책으로 표시 할 수 있습니다. 정말 고맙습니다! –