You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang中如何用POST请求体修改Payload结构体的To字段

解决方案

你需要先接收POST请求体里的phone值,再把它赋值给Payload的To字段,具体实现步骤如下:

  1. 定义接收请求体的结构体
    因为请求体结构是{"phone": "1989876787"},先定义对应结构体来解析请求体数据:
type ReqBody struct {
    Phone string `json:"phone"` // json标签要和请求体里的key完全一致
}
  1. 在Send函数中绑定请求体并赋值
    用Gin的ShouldBindJSON方法把请求体绑定到结构体,再将Phone值赋给Payload的To字段,同时处理绑定失败的情况:
func Send(c *gin.Context) {
    // 接收并解析请求体
    var req ReqBody
    if err := c.ShouldBindJSON(&req); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": "请求格式错误"})
        return
    }

    // 初始化Payload并赋值To字段
    data := Payload{
        MessagingProduct: "sms",
        To:               req.Phone, // 把请求体的phone值赋值给To
    }

    jsonStr, _ := json.Marshal(data)
    fmt.Println("req body", string(jsonStr))
    
    // 后续可添加发送逻辑...
}

可选简化方案(不用额外结构体)

如果不想定义新结构体,也可以用map[string]string直接接收请求体:

func Send(c *gin.Context) {
    var req map[string]string
    if err := c.ShouldBindJSON(&req); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": "请求格式错误"})
        return
    }

    data := Payload{
        MessagingProduct: "sms",
        To:               req["phone"], // 直接取map中的phone值
    }

    jsonStr, _ := json.Marshal(data)
    fmt.Println("req body", string(jsonStr))
}

不过更推荐用结构体的方式,能避免拼写错误,也方便后续扩展请求体字段。

内容的提问来源于stack exchange,提问作者silvia zulinka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:39:20