【问题标题】:API request works with postman, but not in Node.js (request)API 请求适用于邮递员,但不适用于 Node.js(请求)
【发布时间】:2019-07-03 06:47:29
【问题描述】:

我正在做一个与 API 对话的项目,我的脚本在 nodeJS 中(这是一个大项目,所以我会给你一个非常简化的版本)

基本上,当我使用邮递员向 API 发出 PUT 请求时,它工作正常, 当我使用我的代码执行此操作时:GET 效果很好(所以我知道 URL 是正确的),但 PUT 不适用于我的脚本,我的控制台上没有错误,并且 API 简单地发回 OK 状态,所以我不知道哪里出错了

这是我的脚本的一个非常基本的版本(也不起作用)

(我知道网址是正确的)

PUT 参数:

{ method: 'PUT',
  baseUrl: 'https://fusionrv.XXXX.XX/fusion/apiservice',
  url:
   'XXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXX',
  qs:
   { auth:
      'AUTH_KEY',
     value: 1 },
  headers: { 'content-type': 'application/json' } }

简单代码(没有导入):

request(putParams, (err, res) => {
    if (err) console.log(err);
    data = JSON.parse(res.body)
    console.log(data)
});

在 Postman 中,我有相同的 baseURL 和 url,以及相同的参数“auth”和“value”,正文设置为“none”,标题为 Content-type: application/json

响应(在 Postman 和 NodeJS 中):

{
    "Status": "Success"
}

那么有谁知道为什么它适用于邮递员而不适用于请求模块? 谢谢大家!

【问题讨论】:

  • 你用什么来提出请求的?
  • PUT 请求的执行情况如何?您使用的是什么工具或框架?您是否尝试将qs 更改为body
  • 对不起,我在 Node.js 中使用 request 模块,显然是 postman,它是一个发送到 API 的查询字符串,它是一个空正文。
  • 这个link可能有用

标签: javascript node.js api postman


【解决方案1】:

添加用户代理作为标题的一部分

'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'

【讨论】:

    【解决方案2】:

    原来问题出在 API 上,我需要做一个 POST 请求并使用不同的 URL 来访问它,这是一个非常奇怪的 API。

    【讨论】:

      猜你喜欢
      • 2020-11-08
      • 2021-10-06
      • 2021-04-13
      • 1970-01-01
      • 2022-08-15
      • 1970-01-01
      • 2021-05-24
      • 2020-11-20
      • 2019-08-25
      相关资源
      最近更新 更多