如何将CURL POST请求转换为NodeRED

时间:2019-09-19 17:17:38

标签: curl post node-red

将以下CURL请求转换为NodeRED流时遇到问题:

curl -X POST -u "apikey:my_api_key" -F "features=objects" -F "collection_ids=my_collection_ids" -F "image_url=my_image_URL" "API_url"

我创建了一个功能节点和一个HTTP请求节点(方法设置为POST,URL设置为“ API_url”)。

在功能节点中,我编写了以下代码:

msg.headers = {}
msg.headers = {
    'content-type': 'application/x-www-form-urlencoded',
    'apikey': 'my_api_key'
};

msg.payload = { }
msg.payload = { 
    'features': 'objects',
    'collection_ids': my_collection_ids',
    'image_url': my_image_URL'
};

return msg;

当我触发请求时,出现此错误:

"{"code":401, "error": "Unauthorized"}"

我在传递标头中的apikey时出错吗?有什么建议么? 提前非常感谢

1 个答案:

答案 0 :(得分:1)

问题出在您的身份验证标头上。

当您传递-u username:pass进行卷曲时,它将在请求中生成相应的Authorization标头,如下所示:

Authorization: Basic dXNlcm5hbWU6cGFzcw==

其中的username:pass部分使用base64编码。

因此,对于您的情况,应执行以下操作以正确设置标题:

msg.headers = {
    'content-type': 'application/x-www-form-urlencoded',
    'Authorization': 'Basic '+(new Buffer('apikey:my_api_key')).toString('base64')
};