亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在golang中以標準方式從http請求中獲取數據?

如何在golang中以標準方式從http請求中獲取數據?

Go
SMILET 2021-12-27 17:50:29
我正在嘗試從 golang 中的 http 請求中獲取數據。我正在使用 net/http 包。在我的服務器處理程序中,我試圖從 r.Body 獲取數據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 call 調用這個服務時,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.Formr.ParseForm()var body []bytefor key, _ := range r.Form {    body = []byte(key)    break}但是現在 curl 請求失敗了。有沒有標準的方法可以從 golang 的 http 請求中檢索輸入數據?我正在使用 Go 1.6。有人可以幫我解決這個問題嗎?
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

規范不允許使用 GET 請求發送有意義的正文。所以你的瀏覽器可能正在發送一個空的正文。您可以改用 POST。不出所料,r.ParseForm()它不起作用,因為它希望主體由application/x-www-form-urlencoded. 不是json。


如果 GET 更適合將用戶輸入發送到您服務器的請求處理程序,您可以使用 url 查詢參數。


為數據參數引用 JQuery.ajax()文檔,


要發送到服務器的數據。如果不是字符串,則將其轉換為查詢字符串。它附加到 GET 請求的 url。請參閱 processData 選項以防止此自動處理。對象必須是鍵/值對。


所以你可以這樣做,


$.ajax({

  type: "GET",

  url: "http://localhost:8081/api/services/test/",

  data: {AppName: "Proline", Properties:null, Object: ""}, // An object, not a string.

  contentType: "application/json; charset=utf-8",

  dataType: "json",

  success: function(data){alert(data)}

})

在服務器中,


params := r.URL.Query()

params.Get('AppName') // returns 'Proline'

請參閱文檔:https : //golang.org/pkg/net/url/#URL.Query


查看完整回答
反對 回復 2021-12-27
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號