1 回答

TA貢獻1820條經(jīng)驗 獲得超9個贊
有幾種方法可以解決這個問題。您可以使用 Postman 等工具,或者只是curl從命令行使用將發(fā)布請求發(fā)送到您的端點。這是我用來訪問端點的curl命令(我使用端口8080進行測試),標志后面的位-d是請求正文:
curl -X POST http://localhost:8080/903/access -d '{"Act": "act", "Nonce": "nonce", "Signature": "signature", "TimeOut": 64, "Offset": 0}'
我確實修改了代碼以刪除大部分邏輯。此請求僅顯示當前代碼如何解析請求正文的示例。如果您對處理程序函數(shù)中的其他一些邏輯如何工作更感興趣,請告訴我,我可以編輯我的回復。這是我用于測試的代碼:
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
"os"
)
// Required parameters for the request
type params struct {
Act string
Nonce string
Signature string
Timeout int64
Offset int
}
func main() {
// Endpoints available
http.HandleFunc("/903/access", handleAccess)
err := http.ListenAndServe(os.Args[1], nil)
if err != nil {
log.Fatal(err)
}
}
func parse(w http.ResponseWriter, r *http.Request) (params params, ok bool) {
w.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS")
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Max-Age", "3600")
if r.Method != "POST" {
w.Header().Set("Allow", "POST, OPTIONS")
if r.Method == "OPTIONS" {
w.WriteHeader(http.StatusOK)
} else {
w.WriteHeader(http.StatusMethodNotAllowed)
}
return
}
err := json.NewDecoder(r.Body).Decode(¶ms)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
log.Printf("%s: %v", r.URL.Path, err)
return
}
return
}
func handleAccess(w http.ResponseWriter, r *http.Request) {
params, _ := parse(w, r)
fmt.Printf("%+v\n", params)
}
這是我在完成所有操作后收到的輸出:
{Act:act Nonce:nonce Signature:signature Timeout:64 Offset:0}
- 1 回答
- 0 關注
- 108 瀏覽
添加回答
舉報