【问题标题】:How to query jayson (nodejs) with curl如何使用 curl 查询 jayson (nodejs)
【发布时间】:2023-03-16 12:00:01
【问题描述】:

我试图弄清楚如何在“jayson”npm 包上使用 CURL 查询 nodejs 可从此处https://github.com/tedeh/jayson 获得。我在服务器端使用下面的测试程序。 Node 运行正常,并以错误输出响应 Curl。无法找到应该在 Curl 中传递的内容或应该在节点程序上更改的内容:

var jayson = require(__dirname + '/../..');
var server = jayson.server({
  echo: function(msg, callback) {
    if(msg != null)
      callback(null, msg);
  },
  add: function(a, b, callback) {
    if( (a!= null) && (b!= null) )
      callback(null, a + b);
  }
});
server.http().listen(90);

这是 CURL 命令:

$ curl -v -i -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id":"curltest", "method":"echo", "params": ["hello"] }' http://localhost:90

如果 curl 命令不符合 jayson,这是 Curl 收到的 nodejs 答案:

* About to connect() to localhost port 90 (#0)
*   Trying 127.0.0.1...
* connected
* Connected to localhost (127.0.0.1) port 90 (#0)
> POST / HTTP/1.1
> User-Agent: curl/7.28.1
> Host: localhost:90
> Accept: */*
> Content-Type: application/json
> Content-Length: 16
>
* upload completely sent off: 16 out of 16 bytes
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Content-Length: 79
Content-Length: 79
< Content-Type: application/json
Content-Type: application/json
< Date: Tue, 25 Mar 2014 19:26:21 GMT
Date: Tue, 25 Mar 2014 19:26:21 GMT
< Connection: keep-alive
Connection: keep-alive

<
* Connection #0 to host localhost left intact
{"jsonrpc":"2.0","id":null,"error":{"code":-32600,"message":"Invalid request"}}* Closing connection #0

非常感谢您的帮助, 雷米

【问题讨论】:

    标签: node.js curl


    【解决方案1】:

    您正在从 Windows 运行 curl。这就是为什么参数周围的单引号对您不起作用的原因。将它们改为双引号:

    curl -i -X POST -H "Content-Type: application/json" -d "{\"echo\": \"Name\"}" http://localhost:90/?
    

    另外,请尝试在末尾附加-v 运行命令。它将向您显示 curl 的调试消息。如果它不适合您,请向我们展示消息。

    【讨论】:

    • 谢谢你的试探!顺便说一句,你是对的,我使用的是 Cygwin 的 Curl。不幸的是,您的修复给了我同样的错误。我已经更新了您推荐的描述。
    • @user1680283 你的 curl 命令没问题。不是由node.js老板来解决这个问题!
    【解决方案2】:

    我找到了诀窍,并纠正了上面的错误。我们应该兼容 jsonrpc 2.0,因为 Jayson 只考虑 jsonrpc2。

    这是“echo”脚本的正确 curl 命令行:

    $ curl -v -i -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id":"curltest", "method":"echo", "params": ["hello"] }' localhost:90 
    

    这是“添加”脚本的正确 curl 命令行:

    $ curl -v -i -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id":"curltest", "method":"add", "params": [1, 2] }' http://localhost:90
    

    【讨论】:

      猜你喜欢
      • 2013-08-19
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 2022-01-23
      • 2014-03-19
      • 2012-12-14
      相关资源
      最近更新 更多