我正在尝试将一个小型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);
}
}));
});发布于 2020-02-11 20:01:35
你能试试:
curl -X POST http://localhost:8083/<BASE_API_PATH>/doStuff因为它是POST请求,所以没有显式HTTP方法的curl可能无法工作。
https://stackoverflow.com/questions/60176363
复制相似问题