我已经构建了一个基于 Guzzle 的 API 客户端,自 3.4.2 版以来,它在 Content-Type 标头中添加了一个 utf-8 字符集。使用此标头,Asana API 返回 400 Bad Request 错误,而没有字符集则一切正常。
这不适用于 POST 和 PUT 请求:
内容类型:application/x-www-form-urlencoded;字符集=utf-8
这有效:
内容类型:application/x-www-form-urlencoded;
使用 curl 作为最简单的示例:
这个失败了:
curl -u {apikey}: https://app.asana.com/api/1.0/projects -d "name=Test" -d "notes=Test." -d "workspace={workspace-id}" --header "Content-Type: application/x-www-form-urlencoded; charset=utf-8"
使用以下输出返回 400 错误请求:
{"errors":[{"message":"请求数据必须是 JSON 对象,不能为空"}]}
这个成功了:
curl -u {apikey}: https://app.asana.com/api/1.0/projects -d "name=Test" -d "notes=Test." -d "workspace={workspace-id}" --header "Content-Type: application/x-www-form-urlencoded;"
这将返回使用发送的数据创建的 201。
其他 POST 和 PUT 请求也会发生这种情况。这是 Asana API 中的错误还是预期行为?