JSON-RPC 快速开始

文章目录

    • JSON-RPC
      • 什么是JSON-RPC
      • JSON-RPC java开源实现
      • JSON-PRC go开源实现
      • JSON-RPC 和 Restful 都属于什么?
      • RPC、JSON-RPC和HTTP区别
    • 以太坊使用json-rpc?
    • JSON-RPC和gRPC
    • WEB开发中,使用JSON-RPC好,还是RESTful API好?

JSON-RPC

官网: https://www.jsonrpc.org/
(译) JSON-RPC 2.0 规范(中文版): https://www.w3cschool.cn/ycuott/z7er3ozt.html

什么是JSON-RPC

JSON是一种轻量级的数据交换格式,它可以表示数值、字符串、序列及名/值对集合。

JSON-RPC是一种无状态的,轻量级的远程程序调用协议。叫 JSON 的原因是因为返回值是 JSON。

JSON-RPC协议中的客户端一般是为了向远程系统请求执行某个方法。客户端向实现了JSON-RPC协议的服务端发送请求,多个输入参数能够通过数组或者对象传递到远程方法,这个远程方法也能返回多个输出数据,具体是什么,当然要看具体的方法实现。

所有的传输都是单个对象,用JSON格式进行序列化。请求包含三个特定属性:

  • method,方法,是等待调用的远程方法名,字符串类型
  • params,参数,对象类型或者是数组,向远程方法传递的多个参数值
  • id,任意类型值,用于和最后的响应进行匹配,也就是这里设定多少,后面响应里这个值也设定为相同的

demo:

curl -X POST \-H "Content-Type: application/json" \--data '{ "jsonrpc": "2.0", "method": "Filecoin.ChainHead", "params": [], "id": 3 }' \'http://127.0.0.1:1234/rpc/v0'

响应的接收者必须能够给出所有请求以正确的响应。响应也有三个属性:

  • result,结果,是方法的返回值,如果方法执行时出现了错误,那么这个值必须为空
  • error,错误,当出现错误时,返回一个特定的错误编码,没有错误就为空值
  • id,就是请求带的那个id值,用于匹配

需要注意到,有一些场景下,是不用返回值的,比如只对客户端进行通知,由于不用对请求的id进行匹配,所以这个id就是不必要的,置空或者直接不要了。

总结:JSON-RPC比较符合直观,格式也相对宽松;RESTFUL太死板、SOAP太麻烦,那就是JSON RPC

JSON-RPC java开源实现

官网:https://github.com/briandilley/jsonrpc4j

JSON-PRC go开源实现

使用json-prc的一个小demo:
https://github.com/shepf/star-tools

JSON-RPC 和 Restful 都属于什么?

答:都属于 Web Service 模型,该模型用于帮助人们解决应用程序与服务器传递数据的问题。

而基于该模型的解决方案大体上有三类,即:

  • SOA 模型(面向消息)
  • RPC 模型(面向方法)
  • REST 模型(面向资源)其中 RPC 模型,又分成三类:
    XML-RPC
    JSON-RPC
    SOAP + WSDL [SOAP 本质上是 XML-RPC 的升级版]

已经没有人用 SOA 模型解决问题了。

接着我们再了解一点,那就是 RPC 模型的这三种解决方案,现在还有人用的,也只剩下 JSON-RPC 一种了。

总结: 目前主要使用 JSON-RPC 、REST。

RPC、JSON-RPC和HTTP区别

【基础】RPC、JSON-RPC和HTTP区别
参考URL: https://blog.csdn.net/chenguolinblog/article/details/90607551

以太坊使用json-rpc?

在以太坊中,使用 JSON-RPC 协议可以与以太坊节点进行交互,例如发送交易、查询区块链数据、订阅事件等操作。以太坊节点提供了一个 JSON-RPC 接口,客户端可以通过发送符合以太坊 JSON-RPC 协议规范的请求来与节点进行通信。

在具体实现方面,以太坊节点使用了不同的 JSON-RPC 库或框架来实现 JSON-RPC 协议。最常用的是 Go 语言实现的 Geth 节点,它使用自己的 JSON-RPC 实现。此外,还有其他以太坊客户端,如 Parity、OpenEthereum,它们也使用自己的 JSON-RPC 实现。此外,还有一些第三方的 JSON-RPC 库可供使用,如 web3.js 和 web3.py,它们提供了对以太坊 JSON-RPC 接口的封装和更易于使用的 API。

总结:以太坊使用 JSON-RPC 协议作为与以太坊节点进行通信的标准协议,具体的 JSON-RPC 实现取决于所使用的以太坊客户端或第三方库。

JSON-RPC和gRPC

JSON-RPC和gRPC都是远程过程调用(RPC)框架,但它们在底层技术、数据序列化格式和使用场景上有所不同。在构建区块链时,选择JSON-RPC还是gRPC取决于几个因素。

  • JSON-RPC:
    JSON-RPC是一种轻量级的RPC协议,使用JSON(JavaScript对象表示法)进行数据序列化。
    它简单易懂,广泛支持各种编程语言。
    JSON-RPC通常在HTTP或WebSocket上实现,适用于基于Web的应用程序。它支持各种数据类型,并且可读性强,这在开发和调试过程中非常有帮助。
    JSON-RPC非常适合强调互操作性和易于实现的场景,而不是性能和效率。

  • gRPC:
    gRPC是由Google开发的高性能RPC框架。它使用Protocol Buffers(protobuf)作为默认的数据序列化格式。
    Protocol Buffers是一种二进制序列化格式,可以高效紧凑地表示结构化数据。
    gRPC支持多种编程语言,并提供双向流式传输、流量控制和身份验证等功能。它使用HTTP/2作为传输协议,实现了高效的多路复用、头部压缩和服务器推送等特性。
    gRPC非常适合强调性能、可扩展性和高效网络通信的场景,例如微服务架构。

总结,选择JSON-RPC还是gRPC取决于具体需求。如果注重互操作性和易用性,且对性能和效率要求不高,可以选择JSON-RPC。如果注重性能、可扩展性和高效的网络通信,尤其是在微服务架构等场景下,可以选择gRPC。

WEB开发中,使用JSON-RPC好,还是RESTful API好?

WEB开发中,使用JSON-RPC好,还是RESTful API好?
参考URL: https://www.zhihu.com/question/28570307?sort=created

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端素材】推荐优质数据统计后台管理系统网页Cleopatra.平台模板(附源码)

一、需求分析 在线后台管理系统是指供管理员或运营人员使用的Web应用程序,用于管理和监控网站、应用程序或系统的运行和数据。它通常包括一系列工具和功能,用于管理用户、内容、权限、数据等。下面是关于在线后台管理系统的详细分析: 1、功…

ssh简介以及 windows 安装ssh教程

SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录和其他安全网络服务。通过 SSH,用户可以安全地访问远程计算机,执行命令、传输文件等操作。SSH 使用公钥加密技术,确保数据传输的安全性。本文将从…

TypeScript 哲学 - 2、Narrowing

四种类型守卫 1、truthiness narrowing 2、 3、 4、 control flow analysis

C语言:结构体(自定义类型)知识点(包括结构体内存对齐的热门知识点)

和黛玉学编程呀,大家一起努力呀............. 结构体类型的声明 回顾一下 struct tag { member-list; }variable-list; 创建和初始化 我们知道,在C语言中,对于一些数据是必须初始化的,但是结构体怎么创建并且初始化呢&#xff1…

【计算机网络】TCP 如何实现可靠传输

TCP通过三次握手建立连接,四次挥手释放连接,确保连接建立和连接释放的可靠。 序列号、检验和、确认应答信号、重发机制、连接管理、窗口控制、流量控制、拥塞控制 标准回答 可靠传输就是通过TCP连接传送的数据是没有差错、不会丢失、不重复并且按序到达的…

springboot+vue+mysql项目使用的常用注解

实体类常用注解 Data Data 是一个 Lombok 提供的注解&#xff0c;使用 Data 注解可以简化代码&#xff0c;使代码更加简洁易读。 作用&#xff1a;自动为类生成常用的方法&#xff0c;包括 getter、setter、equals、hashCode 和 toString 等需要加Lombok的依赖 <depende…

rk3568-一种基于wifi的网络环境搭建方案

前言&#xff1a; PC--Ubuntu--开发板 三者之间的网络互相ping通很重要&#xff0c;尤其是ubuntu和开发板互ping成功最关键&#xff0c;关系到nfs&#xff0c;tftp等常用的开发手段。现在大多数开发板都带有wifi芯片&#xff0c;现在提供一种方案可以三个设备无线地搭建网络环境…

Open3D0.14.1编译、安装、demo使用教程

写在前面 本文内容 Open3D在0.15版之前&#xff0c;没有提供编译好的包&#xff0c;要使用C版本必须自己编译&#xff0c;本文是Open3D0.14.1在Windows下和Linux(Ubuntu1804)下的编译、使用教程&#xff1b; Open3D其他版本的编译和使用相关教程见 各个版本的Open3D、PCL的编译…

STL常见容器(map/multimap容器)---C++

STL常见容器目录&#xff1a; 8.map/ multimap容器8.1 map基本概念8.2 map构造和赋值8.3 map大小和交换8.4 map插入和删除8.5 map查找和统计8.6 map容器排序8.6.1 内置类型排序8.6.2 自定义类型排序8.6.3 自定义和内置类型混合排序 8.map/ multimap容器 两者基本一致&#xff…

用node写后端环境运行时报错Port 3000 is already in use

解决方法:关闭之前运行的3000端口,操作如下 1.WindowR输入cmd确定,打开命令面板 2.查看本机端口详情 netstat -ano|findstr "3000" 3.清除3000端口 taskkill -pid 41640 -f 最后再重新npm start即可,这里要看你自己项目中package.joson的启动命令是什…

Flink:动态表 / 时态表 / 版本表 / 普通表 概念区别澄清

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

Python+PySide6实现一个选择文件并做处理的GUI办公小工具(完整代码)

目录 专栏导读背景安装注意事项完整代码结尾专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动化专栏求订阅 🕷 此外还…

天翼云登录参数JavaSrcipt逆向

天翼云登录参数 password 、comParam_curTime、comParam_seqCode、comParam_signature JavaSrcipt逆向 目标网站 https://m.ctyun.cn/wap/main/auth/login?redirect/my 目标参数 要逆向的有 password、comParam_curTime、comParam_seqCode、comParam_signature 四个参数 …

安卓使用ExoPlayer出现膨胀类异常

1.导包 implementation com.google.android.exoplayer:exoplayer-core:2.15.1implementation com.google.android.exoplayer:exoplayer-ui:2.15.1 2.在Androidifest.xml加入权限&#xff0c;我这里加了忘了与读写权限 <uses-permission android:name"android.permissio…

【Fastadmin/ThinkPHP5】使用Queue队列方法详细步骤

在现代应用开发中&#xff0c;合理利用队列系统能够有效提升系统的性能和响应速度&#xff0c;尤其是在处理耗时较长的任务时&#xff0c;如发送大量邮件、执行定时任务等。下面是如何在ThinkPHP框架中设置和使用队列功能的详细指南&#xff1a; 1.配置队列服务 在applicatio…

Tomcat服务部署、优化

一 Tomcat的基本介绍 Tomcat概念 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试 JSP 程序的首选。 当在一台机器上配置好Apache 服务器…

VMwareWorkstation17.0虚拟机搭建WindowsXP虚拟机(完整安装步骤详细图文教程)

VMwareWorkstation17.0虚拟机搭建WindowsXP虚拟机&#xff08;完整安装步骤详细图文教程&#xff09; 一、Windows XP1.Windows XP简介2.Windows XP 的下载地址 二、配置 Windows XP 虚拟机运行环境1.新建虚拟机2.选择类型配置3.插入WinXP光盘映像文件(ISO)4.选择操作系统5.命名…

Home Assistant:基于Python的智能家居开源系统详解

Home Assistant&#xff1a;基于Python的智能家居开源系统详解 在数字化和智能化的时代&#xff0c;智能家居系统成为了现代家庭的新宠。它们能够让我们更加方便地控制家中的各种设备&#xff0c;实现自动化和个性化的居住体验。其中&#xff0c;Home Assistant作为一款基于Pyt…

美易官方:3月1日美股成交额前20

3月1日&#xff0c;美股市场热闹非凡&#xff0c;成交额前20的公司股票交易活跃&#xff0c;其中&#xff0c;英伟达&#xff08;NVIDIA&#xff09;的股价收在800美元之上&#xff0c;创下了历史新高。这一天的股市走势充分展示了投资者对于科技股的热烈追捧&#xff0c;同时也…

手机NFC录入门禁数据,实现手机开门

近场通信&#xff08;Near Field Communication&#xff0c;简称NFC&#xff09;&#xff1a; 是一种新兴的技术&#xff0c;使用了NFC技术的设备&#xff08;例如移动电话&#xff09;可以在彼此靠近的情况下进行数据交换&#xff0c;是由非接触式射频识别&#xff08;RFID&am…