Я пытаюсь собрать небольшую микросервисную операцию edgeSDK, которая программно добавляет тело к http-запросу, который он делает, чтобы пользователю не приходилось делать это вручную как часть команды curl. В настоящий момент, если я выполняю в терминале, например,
curl -d '{"jsonrpc": "2.0", "method": "getMe", "params": [""]}' http://localhost:8083/<BASE_API_PATH>/doStuff
как запрос API, он работает нормально, но если я наберу
curl http://localhost:8083/<BASE_API_PATH>/doStuff
и попытаюсь выполнить операцию код программно добавляет
{"jsonrpc": "2.0", "method": "getMe", "params": [""]}
к объекту запроса http, на данный момент он только что возвратил ошибку 404 - Not Found . Есть ли способ программно добавить тело, или включение его в команду curl в терминале - единственный способ включить тело?
Вот (более или менее) мой код для попытки заставить эту часть операции микросервиса работать. Я пробовал различные варианты назначения тела для request.body
и data
в объекте, передаваемом в context.http.request()
, как в виде строки, так и в качестве JSON объекта. Самые последние итерации закомментированы в коде ниже.
app.post('/doStuff', (request, response) =>
{
//const body = JSON.stringify(JSON.parse('{"jsonrpc": "2.0", "method": "getMe", "params": [""]}'));
//const body = JSON.stringify({"jsonrpc": "2.0", "method": "getMe", "params": [""]});
//const body = '{"jsonrpc": "2.0", "method": "getMe", "params": [""]}';
//const body = {"jsonrpc": "2.0", "method": "getMe", "params": [""]};
//request.body = body;
context.http.request((
{
type: 'POST',
//data: body,
url: 'http://localhost:8083/jsonrpc/v1',
success: function(r)
{
//TODO: stuff
response.end('Finally, it works');
},
error: function(err)
{
response.end(err.message);
}
}));
});