向端点发送 POST 请求会导致“绑定元素必须是结构”

问题描述 投票:0回答:2

我有一个使用 Echo 库在 Go 中编写的端点。我正在尝试通过 python 脚本发布数据,但收到“绑定元素必须是结构”错误。

来自端点的代码,我将请求正文绑定到变量(Go lang):

// get body from request
requestBody := make(map[string]interface{})
    if err := c.Bind(&requestBody); err != nil {
        return err
    }

Python脚本:

data = {
    "AED": {
        "USD": 0.2719
        },
    "ARS": {
        "USD": 0.0142
    }
}

 headers = {
        "Authorization": # my_jwt_token,
        "API-Key": # my api_key
    }

 requests.put(url, data=payload, headers=headers)
 
 if not response.ok:
     raise Exception("Failed to update")

 return result.status_code

错误信息:

{"logType":"application","msg":"Status: 400, Error: code=400, message=binding element must be a struct, Title: Client Error, Message: binding element must be a struct, Detail: ","action":"Error Handler","level":"error","timestamp":"2020-07-13T13:39:19-07:00"}

为什么会发生这种情况?我可以使用 Postman 发送完全相同的 Payload 并且工作正常,但是使用 python requests 库发送 PUT 请求不起作用。

python go struct request put
2个回答
0
投票

想通了。 post请求中的“data”字段应更改为“json”。


0
投票

对于那些来自 Google 的人:

回显失败并显示此消息

绑定元素必须是结构体

当您的 API 需要 JSON 输入,但客户端发送表单值时。 参见

echo binder BindBody()

© www.soinside.com 2019 - 2024. All rights reserved.