私はgolangのhttpリクエストからデータを取得しようとしています。私はnet/httpパッケージを使用しています。私のサーバハンドラでは、r.Bodyからデータを取得しようとしています。golangの標準的な方法でhttpリクエストからデータを取得する方法は?
body, err := ioutil.ReadAll(r.Body)
if err != nil {
log.Printf("FATAL IO reader issue %s ", err.Error())
}
いくつかの入力データでサービスをカールするとうまく動作します。
curl --data '{"AppName":"Proline","Properties":null,"Object":"","Timestamp":"2016:03:27 00:08:11"}' -XGET http://localhost:8081/api/services/test/
しかし、このサービスをajax呼び出しから呼び出そうとすると、r.Bodyは空です。
requestJSON = '{"AppName":"Proline","Properties":null,"Object":"","Timestamp":"2016:03:27 00:08:11"}'
$.ajax({
type: "GET",
url: "http://localhost:8081/api/services/test/",
data: requestJSON,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data){alert(data);},
failure: function(errMsg) {
alert(errMsg);
}
});
だから私はr.Form
r.ParseForm()
var body []byte
for key, _ := range r.Form {
body = []byte(key)
break
}
からの入力データを読み込むように変更しかし、今カール要求は失敗します。 golangのhttpリクエストから入力データを取得する標準的な方法はありますか?私はGo 1.6を使用しています。誰かが私にこれを手伝ってもらえますか?
あなたはPOSTとして送信しようとしたことがありますか? –
@Not_a_Golfer - POSTは 'r.Form'で正常に動作しています。 GETでデータを送信することはできませんか?[それは良い方法ではないかもしれません]。 – Dany
本文付きのhttp GETリクエストは珍しいです。私は仕様にも反対していると思う。だから私はあなたのブラウザはそれを許可していないと思う。はい、良い習慣ではありません。 POSTを使用します。 –