随笔分类 - Distributed/RPC
摘要:gRPC概述 gRPC是一种跨语言的RPC框架,之所以它能跨语言,是因为它基于protobuf描述对象实体和方法,最后通过protobuf编译器生成指定语言的代码。 这样,就能通过一套protobuf声明生成多种语言的相同API,对于实现跨语言的RPC通信非常便利,同时也使用protobuf作为通信
阅读全文
摘要:JDK自带 HTTPURLConnect:功能单一 Apache HttpClient https://hc.apache.org/index.html 是一个比较古老的HTTP框架,使用非常普遍。 OkHTTP https://square.github.io/okhttp/ HTTP框架新秀,具
阅读全文
摘要:Feign框架对于文件上传消息体格式并没有做原生支持,需要集成模块feign-form来实现。 独立使用Feign 添加模块依赖: <!-- Feign框架核心 --> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>f
阅读全文
摘要:需求描述 动态URL的需求场景: 有一个异步服务S,它为其他业务(业务A,业务B...)提供异步服务接口,在这些异步接口中执行完指定逻辑之后需要回调相应业务方的接口。 这在诸如风控审核,支付回调等场景中挺常见的。 那么,这个回调业务方接口该怎么实现呢? 首先,需要约定好回调这些业务方接口时的请求方法
阅读全文
摘要:Feign入门介绍 基本概述 除Feign之外,在Java中经常使用的HTTP客户端组件主要有3个,如下: (1)HttpURLConnection,JDK自带 (2)Apache HttpClient,独立的HTTP客户端实现,使用广泛,目前已发展到5.x版本,详见:https://hc.apac
阅读全文
摘要:目录 API文档格式 文档管理方式 基于注解实现,代码和文档在一起 Swagger Api2Doc 基于API测试工具生成 Postman rest-client 独立编写文档 RAP DOClever APIDOC CrapApi 写在最后 规范的接口文档管理方式有助于提高组件协同(如:前后端分离
阅读全文
摘要:目录 接口实现版本管理的意义 如何实现接口的版本管理 项目实战 接口实现版本管理的意义 API版本管理的重要性不言而喻,对于API的设计者和使用者而言,版本管理都有着非常重要的意义。 首先,对于API的设计和实现者而言,需要考虑向后兼容性,但是随着业务的发展或需求的变更往往会导致兼容性实现非常复杂,
阅读全文
摘要:目录 接口幂等性的含义 接口符合幂等性有什么用处 HTTP方法的幂等性与安全性 如何设计符合幂等性的接口 写在最后 接口幂等性的含义 幂等性原本是数学中的含义,表达式的是N次变换与1次变换的结果相同。 而RESTFul API中的幂等性是指调用某个方法1次或N次对资源产生的影响结果都是相同的,需要特
阅读全文
摘要:一.什么是CORS CORS是解决浏览器跨域限制的W3C标准,详见:https://www.w3.org/TR/cors/。 根据CORS标准的定义,在浏览器中访问跨域资源时,需要做如下实现: 服务端在响应消息头中包含消息头:Access-Control-Allow-Origin,值为服务端允许访问
阅读全文
摘要:一.什么是跨域? 广义的跨域: (1) 资源跳转:A链接、重定向、表单提交 (2) 资源嵌入:<link>、<script>、<img>、<frame>等dom标签,还有样式中background:url()、@font-face()等文件外链 (3) 脚本请求:js发起的ajax请求、dom和js
阅读全文
摘要:1. rest api uri设计的7个准则(1)uri末尾不需要出现斜杠/(2)在uri中使用斜杠/表达层级关系(3)在uri中可以使用连接符-提升可读性(4)在uri中不允许出现下划线字符_(5)在uri中优先使用小写字符(6)在uri中不允许出现文件扩展名,而应该使用content-type生
阅读全文
摘要:一. 重放攻击概述 百科对重放攻击的描述:https://zh.wikipedia.org/wiki/重放攻击简而言之,重放攻击的产生是由于安全信息被攻击者截取,用于欺骗服务器。而在REST风格的软件架构中,如果仅仅使用HTTP协议,请求数据很容易被网络抓包截取,因此在API层面必须考虑防止重放攻击
阅读全文
摘要:通常可以使用MD5或SHA-1对API参数进行签名,在服务器端通过校验签名结果来验证数据是否被修改。 举个例子:添加用户 地址:http://192.168.0.10/v1/user/add?sign=MD5(请求参数 + timestamp + access_token)×tamp=14
阅读全文
摘要:官网:https://github.com/google/protobuf环境:windows,java1. protobuf概述protobuf是Google开发一种数据描述格式,能够将结构化数据序列化,可用于数据存储,RPC中的接口和消息定义等场景。protobuf是以二进制来存储数据的。相对于
阅读全文
摘要:认证授权包含2个方面:(1)访问某个资源时必须携带用户身份信息,如:用户登录时返回用户access_token,访问资源时携带该参数。(2)检查用户是否具备访问当前资源(url或数据)的权限:访问资源时检查用户权限。 在REST架构中,access_token被定义为用户身份标识,用于对资源访问授权
阅读全文
摘要:目前许多前后端应用都采取REST架构风格,前端应用和后端服务通过API进行数据交换。通过REST API在网络中进行数据交换时很容易被网络抓包,然后进行恶意批量调用,最终导致后端服务不堪负重而影响正常业务,甚至通过数据篡改制造大量垃圾数据。鉴于此,REST API的安全就变得非常重要!不考虑任何RE
阅读全文
摘要:1. REST概述 REST(英文:Representational State Transfer,又称具象状态传输)是Roy Thomas Fielding博士于2000年在他的博士论文中提出来的一种万维网软件架构风格,目的是便于不同软件/程序在网络(例如互联网)中互相传递信息。目前在三种主流的W
阅读全文

浙公网安备 33010602011771号