将以下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时出错吗?有什么建议么? 提前非常感谢
答案 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')
};