如何将 CURL POST 请求转换为 NodeRED

How to translate a CURL POST request into NodeRED

我在将以下 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"}"

我在 header 中传递 apikey 是否有误?有什么建议么? 非常感谢

问题出在您的身份验证 header。

当您将 -u username:pass 传递给 curl 时,它会在请求中生成适当的 Authorization header,如下所示:

Authorization: Basic dXNlcm5hbWU6cGFzcw==

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

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

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