再优化一下 分别带入参数请求
时间: 2023-10-06 20:06:06 浏览: 75
好的,下面是一个带有参数的 POST 请求示例代码:
```go
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type Request struct {
Param1 string `json:"param1"`
Param2 int `json:"param2"`
}
type Response struct {
Message string `json:"message"`
Data struct {
ID int `json:"id"`
Name string `json:"name"`
} `json:"data"`
}
func main() {
url := "http://example.com/api/endpoint" // 替换为你的接口地址
// 创建请求体
requestBody := Request{
Param1: "value1",
Param2: 123,
}
// 将请求体转换为 JSON 格式
jsonBody, err := json.Marshal(requestBody)
if err != nil {
fmt.Println("转换 JSON 失败:", err)
return
}
// 发送 POST 请求
resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonBody))
if err != nil {
fmt.Println("请求失败:", err)
return
}
defer resp.Body.Close()
// 读取响应内容
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("读取响应失败:", err)
return
}
// 解析 JSON
var response Response
err = json.Unmarshal(body, &response)
if err != nil {
fmt.Println("解析 JSON 失败:", err)
return
}
// 输出解析结果
fmt.Println("Message:", response.Message)
fmt.Println("ID:", response.Data.ID)
fmt.Println("Name:", response.Data.Name)
}
```
在这个示例中,我们首先创建了一个 `Request` 结构体来表示请求的参数。然后,我们将这个结构体转换为 JSON 格式的字节数组,并使用 `http.Post` 函数发送 POST 请求。
你需要根据实际接口的参数结构定义 `Request` 结构体,并根据需要设置参数的值。然后,将请求体转换为 JSON 格式,并将其作为请求的 body 发送给接口。最后,根据实际接口返回的 JSON 数据结构定义 `Response` 结构体,并访问相应的字段。记得替换示例代码中的 URL 为你实际请求的接口地址。
阅读全文