使用Curl和Json(Node.js)

时间:2017-02-18 10:39:42

标签: node.js curl json-rpc

当我curl忽略Json的“[和]”部分时,我无法让Node.jscurlJSON-RPC)工作请求参数。我正在使用命名参数(即一个对象,而不是一个数组)。

这有效:

curl -v -i POST -H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method":"registerPerson", "params": ["{\"username\":\"morten10\",\"password\":\"mypass\"}"], "id":1 }' \
http://localhost:3000

但是,当我从参数中省略[“和]”时,它不起作用:

curl -v -i POST -H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method":"registerPerson", "params": {\"username\":\"morten10\",\"password\":\"mypass\"}, "id":1 }' \
http://localhost:3000

和Jayson给出了此错误消息:

TypeError: First argument must be a string or Buffer

但是,根据JSON-RPC 2.0规范及其示例,我应该能够在使用命名参数时从params中排除“[和]”部分,如下例所示:

--> {"jsonrpc": "2.0", "method": "subtract", "params": {"minuend": 42, "subtrahend": 23}, "id": 4}
<-- {"jsonrpc": "2.0", "result": 19, "id": 4}

我没有得到什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为您的对象需要是错误建议的字符串。

尝试:

curl -v -i POST -H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method":"registerPerson", "params": "{\"username\":\"morten10\",\"password\":\"mypass\"}", "id":1 }' \
http://localhost:3000