【发布时间】:2021-07-16 17:17:49
【问题描述】:
我正在尝试向一些 3rd 方 API 发送 fetch POST 请求。在 Postman 中测试此调用时,我能够获得成功的 200 响应。在我的项目中使用来自 Postman 的相同代码会返回 415 Unsupported Media Type。我一直在寻找解决方案,并尝试按照几篇文章和文章的建议将其与以下标题一起发送。
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Access-Control-Allow-Origin", "*");
myHeaders.append("Accept", "application/json");
我已将我的 API 调用附在下面,如果有人能够发现我收到此 415 的原因,那将非常有帮助。
var myHeaders = new Headers();
myHeaders.append("xxxxx_api_key", "");
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Access-Control-Allow-Origin", "*");
myHeaders.append("Accept", "application/json");
var raw = JSON.stringify({
api_key: "xxxxx_api_key",
profiles: [{
email: "thomas.jefferson@example.com",
phone_number: "17326138213",
example_property: "valueB",
}],
});
console.log(raw);
var requestOptions = {
method: "POST",
mode: "no-cors",
headers: myHeaders,
body: raw,
redirect: "follow",
};
fetch("https://a.klaviyo.com/api/v2/list/XXXXX/members", requestOptions)
.then((response) => response.json())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));
这是从 Postman 导出的工作请求
curl --location --request POST 'a.klaviyo.com/api/v2/list/XXXXX/members' \
--header 'Content-Type: application/json' \
--header 'xxx_api_key;' \
--data-raw '{ "api_key": "xxx_api_key", "profiles": [ { "email": "thomas.jefferson@example.com", "phone_number": "17326138213", "example_property": "valueB" } ] }'
【问题讨论】:
-
当你导出它时,请展示工作邮递员请求的样子(例如作为 cURL)
-
curl --location --request POST 'a.klaviyo.com/api/v2/list/X3jKqa/members' \ --header 'Content-Type: application/json' \ --header 'xxx_api_key;' \ --data-raw '{ "api_key": 'xxx_api_key', "profiles": [ { "email": "thomas.jefferson@example.com", "phone_number": "17326138213", "example_property": "valueB " } ] }' 上面的调用是从 Postman 提取的一个 fetch API 调用。
-
我看到这两个请求之间的唯一区别是
Accept标头。从我从文档中得到的信息来看,xxx_api_key标头实际上应该看起来像api_key: xxx_api_key但这似乎不是问题,因为 api 密钥也可以放在正文中。
标签: json api rest fetch-api http-status-code-415