第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何制定對這些端點的請求

如何制定對這些端點的請求

Go
倚天杖 2023-07-26 17:08:44
我不知道如何使用所需的參數(shù)發(fā)出“訪問”、“時鐘”和“審核”的請求。您能否指導我如何提出這些請求?package mainimport (    "crypto/sha256"    "crypto/subtle"    "encoding/base64"    "encoding/json"    "fmt"    "log"    "net/http"    "os"    "sync"    "time")const secret = "galumphing"// Required parameters for the requesttype params struct {    Act       string    Nonce     string    Signature string    Timeout   int64    Offset    int}var (    auditLock sync.Mutex    auditBase int    auditLog  []string)var (    seenLock sync.Mutex    seenMap  = map[string]bool{})var (    clockAsk  = make(chan bool)    clockTime = make(chan int64, 1))func main() {    // Endpoints available    http.HandleFunc("/903/access", handleAccess)    http.HandleFunc("/903/clock", handleClock)    http.HandleFunc("/903/audit", handleAudit)    err := http.ListenAndServe(os.Args[1], nil)    if err != nil {        log.Fatal(err)    }}func checkCapacity(w http.ResponseWriter) (ok bool) {    auditLock.Lock()    defer auditLock.Unlock()    if len(auditLog) > 10 {        w.WriteHeader(http.StatusServiceUnavailable)        return    }    ok = true    return}func audit(r *http.Request, params params, ok bool) {    auditLock.Lock()    defer auditLock.Unlock()    auditLog = append(auditLog, fmt.Sprintf("%v %q %q", ok, r.URL.Path, params.Act))}func parse(w http.ResponseWriter, r *http.Request) (params params, ok bool) {    defer func() {        if !ok {            audit(r, params, false)        }    }()    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    }
查看完整描述

1 回答

?
慕妹3146593

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(&params)

    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}


查看完整回答
反對 回復 2023-07-26
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號