Как перевести запрос CURL POST в NodeRED - PullRequest
0 голосов
/ 19 сентября 2019

У меня проблемы с переводом следующего запроса 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"}"

amЯ делаю ошибку, передав apikey в шапке?какие-либо предложения?заранее большое спасибо

1 Ответ

1 голос
/ 19 сентября 2019

Проблема связана с вашим заголовком аутентификации.

Когда вы передаете -u username:pass в curl, он генерирует соответствующий заголовок 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')
};
...