Программно включить тело запроса curl в http-запрос микросервиса edgeSDK - PullRequest
2 голосов
/ 11 февраля 2020

Я пытаюсь собрать небольшую микросервисную операцию 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);
        }
    }));
});

1 Ответ

0 голосов
/ 11 февраля 2020

Можете ли вы попробовать:

    curl -X POST http://localhost:8083/<BASE_API_PATH>/doStuff

Поскольку это POST-запрос, то curl без явного HTTP-метода может не работать.

...