Golang 接收Get、Post请求

Get

1、接收

func GetGet(w http.ResponseWriter, r *http.Request) {
    defer func() {
        r.Body.Close()

        if r := recover(); r != nil {
            stackBytes := debug.Stack()
            fmt.Println("r", r, "Error", stackBytes)
        }
    }()
    r.ParseForm()

    defer func() {
        // 自定义返回内容
        backData := struct {
            Code int
            Msg  string
        }{
            200,
            "success",
        }
        bytes, err := json.Marshal(backData)
        if err != nil {
            fmt.Fprint(w, nil)
            return
        }
        w.Write(bytes)
    }()

    // param
    param1 := r.Form.Get("param1")

    // todo something
}

2、发送

func send() {
    param1 := "param1"
    resp, err := http.Get(fmt.Sprintf("http://127.0.0.1:8080?param1=%s", param1))
    if err != nil {
        log.Println("http.Get err=", err)
        return
    }

    bytes, err := io.ReadAll(resp.Body)
    if err != nil {
        log.Println("ioutil.ReadAll err=", err)
        return
    }
}

Post

1、接收

func PostGet(w http.ResponseWriter, r *http.Request) {
    defer func() {
        r.Body.Close()

        if r := recover(); r != nil {
            stackBytes := debug.Stack()
            fmt.Println("r", r, "Error", stackBytes)
        }
    }()
    r.ParseForm()

    defer func() {
        // 自定义返回内容
        backData := struct {
            Code int
            Msg  string
        }{
            200,
            "success",
        }
        bytes, err := json.Marshal(backData)
        if err != nil {
            fmt.Fprint(w, nil)
            return
        }
        w.Write(bytes)
    }()

    // must post
    if r.Method != http.MethodPost {
        w.WriteHeader(http.StatusMethodNotAllowed)
        return
    }
    
    // param
    paramMap := make(map[string]string)
    _ = json.NewDecoder(r.Body).Decode(&paramMap)

    param1Str := paramMap["param1"]

    // todo something
}

2、发送

func PostSend() {
    sendStruct := struct {
        Param1 string `json:"param1"`
    }{
        "param1",
    }
    sendData, _ := json.Marshal(sendStruct)
    fmt.Println("sendData", string(sendData))
    resp, err := http.Post("http://127.0.0.1:8080", "application/json", bytes2.NewBuffer(sendData))
    if err != nil {
        fmt.Println("post err", err)
        return
    }
    defer resp.Body.Close()

    backBytes, err := io.ReadAll(resp.Body)
    if err != nil {
        log.Println("io.ReadAll err=", err)
        return
    }
}

 

posted @ 2023-07-31 16:53  张永峰z  阅读(118)  评论(0编辑  收藏  举报