以编程方式将 curl 请求正文包含在 edgeSDK 微服务的 http 请求中



我正在尝试将一个小的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 - 未找到错误。有没有办法以编程方式添加正文,或者将其包含在终端的 curl 命令中是包含正文的唯一方法?

这是我(或多或少(尝试使微服务操作的这一部分工作的代码。我已经尝试了将主体分配给request.body的各种排列,并在传递给context.http.request()的对象中data,无论是作为字符串还是作为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);
}
}));
});

你能试试吗:

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

因为它是一个 POST 请求,所以没有显式 HTTP 方法的 curl 可能不起作用。

最新更新