You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Node.js的request npm包调用指定格式的JSON-RPC?

使用request npm包实现JSON-RPC调用

没问题,我来帮你把这条curl命令转换成Node.js里用request包实现的代码。先拆解一下你的curl命令里的核心元素,再对应到request的配置中:

  1. Basic认证:--user myusername 对应request里的auth配置项
  2. 请求体:--data-binary 后的JSON内容是POST请求的主体
  3. 请求头:-H 'content-type: text/plain;' 需要在request的headers里设置
  4. 请求地址:http://127.0.0.1:8332/ 就是请求的URL

步骤1:安装request包

首先确保你已经安装了request:

npm install request

注意:request包目前已经处于维护模式,如果你是新建项目,建议考虑使用axios、node-fetch等替代方案,但下面还是按照你的需求基于request来实现。

步骤2:编写调用代码

下面是完整的Node.js代码,完全对应你的curl命令:

const request = require('request');

// 配置请求参数
const options = {
  url: 'http://127.0.0.1:8332/',
  method: 'POST',
  // Basic认证:对应curl的--user myusername,如果需要密码,把pass改成你的实际密码
  auth: {
    user: 'myusername',
    pass: '' // 如果curl执行时需要输入密码,这里替换为实际密码
  },
  // 请求头:对应curl的-H参数
  headers: {
    'content-type': 'text/plain;'
  },
  // 请求体:对应curl的--data-binary后的JSON内容
  body: JSON.stringify({
    jsonrpc: "1.0",
    id: "curltest",
    method: "getreceivedbyaddress",
    params: ["1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ", 6]
  })
};

// 发起请求
request(options, (error, response, body) => {
  if (error) {
    console.error('请求出错:', error);
    return;
  }
  // 处理响应
  console.log('响应状态码:', response.statusCode);
  console.log('响应内容:', body);
  // 如果需要把响应转成JS对象,可以用JSON.parse(body)
});

代码说明

  • auth字段:用来设置Basic认证的用户名和密码,对应curl的--user参数。如果你的curl命令执行时需要手动输入密码,记得把pass的值替换成实际的密码。
  • body字段:我们用JSON.stringify把JS对象转换成JSON字符串,和curl里的--data-binary内容完全一致,同时保持content-type为text/plain,和原curl命令的请求头完全匹配。
  • 回调函数:处理请求的错误和响应,你可以根据需求进一步解析响应的JSON内容(比如用JSON.parse(body)转成JS对象)。

可选优化:使用json选项简化代码

如果你不严格要求content-type必须是text/plain,可以用request的json: true选项,这样不需要手动转JSON字符串,request会自动设置content-type为application/json并处理序列化/反序列化:

const request = require('request');

const options = {
  url: 'http://127.0.0.1:8332/',
  method: 'POST',
  auth: {
    user: 'myusername',
    pass: ''
  },
  json: true, // 自动处理JSON序列化和反序列化
  body: {
    jsonrpc: "1.0",
    id: "curltest",
    method: "getreceivedbyaddress",
    params: ["1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ", 6]
  }
};

request(options, (error, response, body) => {
  if (error) {
    console.error('请求出错:', error);
    return;
  }
  console.log('响应状态码:', response.statusCode);
  console.log('响应内容:', body); // 这里body已经是JS对象,不需要手动解析
});

内容的提问来源于stack exchange,提问作者Kiran Devkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:00:58