将curl命令转换为Meteor的HTTP调用

问题描述

我尝试“翻译”这个curl命令

curl --request POST --header "Content-Type: application/json" --url http://some-url --user userName:apiKey --data '{ "some": "JSON data as string" }'

进入Meteor的HTTP调用。我尝试过:

const options = {
  { "some": "JSON data as object" },headers: {
    'Content-Type': 'application/json',},params: {
    user: 'userName:apiKey',// Or alternatively
  //
  // user: 'userName:apiKey',};

HTTP.call('POST','http://some-url',options,(error,result) => {
  if (error) {
    reject(error);
  } else {
    resolve(result);
  }
});

使用curl命令可以正常工作,使用HTTP.call我得到403,禁止。使用userName:apiKey的授权似乎失败。如何在HTTP.call示例中指定userName:apiKey?也许他们是另一个问题?

解决方法

如果需要身份验证,则需要添加auth参数。 params参数实际上会将所有包含的属性设置为POST请求正文的一部分。

const options = {
  data: { "some": "JSON data as object" },headers: {
    'Content-Type': 'application/json',},auth: 'userName:apiKey'
}

阅读:https://docs.meteor.com/api/http.html#HTTP-call