POSTMAN PUT 请求不更新值

POSTMAN PUT request not updating values

假设 https://imgur.com/ 的 API 测试员的职位,我正在测试 PUT 请求以更改帐户设置。 我正在关注这个 api 文档 Link 以上 https://apidocs.imgur.com/#7bc88d39-d06d-4661-afff-38ea5b9a1d0a

检查这个的步骤

  1. 添加如下相关信息,我设置show_mature和newsletter_subscribed为true

2.设置访问令牌 3.点击发送 对此的响应是 200,如下所示

  1. 检查详细信息是否已更新,如下面的屏幕截图所示

预期:将show_mature和newsletter_subscribed值设置为真 实际:show_mature 和 newsletter_subscribed 值为假

如果有人能告诉我为什么会这样,我将不胜感激?谢谢

来自 Imgur API docs...

Need help?

The Imgur engineers are always around answering questions. The quickest way to get help is by posting your question on Whosebug with the Imgur tag.

真正有用的 Imgur .

在这里回答是为了在 标签中为这些废话提供规范的答案。

文档中的所有 API 示例都使用某种形式的 multipart/form-data 请求正文有效负载。例如

var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var formdata = new FormData();

var requestOptions = {
  method: 'PUT',
  headers: myHeaders,
  body: formdata,
  redirect: 'follow'
};

fetch("https://api.imgur.com/3/account/{{username}}/settings", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

curl --location --request POST 'https://api.imgur.com/oauth2/token' \
--form 'refresh_token="{{refreshToken}}"' \
--form 'client_id="{{clientId}}"' \
--form 'client_secret="{{clientSecret}}"' \
--form 'grant_type="refresh_token"'

除了任何 上传 相关端点外,这是 绝对不正确。将数据作为 multipart/form-data 传递需要 API 来处理该请求 content-type 猜猜看,Imgur API 不会 .

他们接受的是application/x-www-form-urlencoded

  • 在 Postman 中,这是 x-www-form-urlencoded 选项,而不是 form-data
  • 在 cURL 中,这是 -d 选项,而不是 --form
  • 在 JavaScript 中是 URLSearchParams, not FormData