API开放平台
API开放平台
将写好的SDK上传至maven仓库
将代码上传至github
maven多模块构建
Restful风格
一、API网关(kong、nginx、gateway)
1、挡在数据库前面,
2、SDK相当于工具类 补!
二、技术
1、前端:Ant Design Pro、React、Ant Design Pro Components、Umi、Umi Request
2、后端:java Spring Boot、Spring Boot Starter(SDK开发)、
查看版本 node -v v16.13.0 npm -v 8.1.0
yarn -V 用了umi4
locales干掉 i18nremove命令运行
e2e删掉 test删掉 playwrite删掉 依赖也删掉
idea连接mysql 显示时区不对 解决方式:
https://blog.csdn.net/ss_Grus/article/details/129276012
前端接口调用:oneapi插件自动生成
openapi的规范
!!!tableList\index.tsx需改
BUG清除浏览器缓存后打开网页登录 不跳转页面 需要再次加载才跳转 原因 走后台getLoginUser方法 只有加载时候走
304状态码 是客户端请求未修改
BUG接口信息前端查不到不显示 原因:Required request body is missing报错 解决方式:controller的方法加注解@RequestBody 当前端没有传回的参数导致了这个报错
https://blog.csdn.net/weixin_61016066/article/details/125187074
@RequestBody和@RequestParam区别:来自requestHeader中,即请求头。来自requestHeader中,即请求头。
RESTful是HTTP接口调用的一种特殊实现,遵循REST架构风格的规范,能够提供更加标准化、统一化、可读性和易用性的API设计。
RESTFUL请求方式:
1、GET请求方式 相当于select 向服务器请求数据,不会修改和增加数据。
2、PUT请求方式 相当于update向服务器提交数据,会修改数据的值但是不会改变数据的类型。
3、POST请求方式 相当于insert向服务器提交数据,可能会修改数据值和类型。
4、DELETE请求方式,相当于 delete 对服务器的数据进行删除等操作。删除某一个资源的。
几种HTTP调用方式:
1、HttpClient
2、RestTemplate
3、第三方(OKHTTP\Hutool https://www.hutool.cn/)
API签名认证:
- 签发签名
- 使用签名(校验签名)
- 用户参数
- 签名(用户参数+密钥)=》签名生成算法 (MD5、HMac、Sha1)签名认证算法:(jwt)
- 随机数
- 时间戳
实现:
- accessKey:调用标识userA、userB(复杂、无序、无规律)
- secretKey:密钥
千万不能把密钥在服务器之间传递,有可能被拦截。
怎么防重放?
加nonce随机数,只能用一次 服务端要保存用过的随机数
加timestamp时间戳
开发一个简单易用的SDK:
1、starter好处,可以直接在yml中写配置自动创建客户端
!!!把maven打好的包发布到maven仓库中
提取代码中公共部分:
使用AOP缺点:只能在一个项目中不可以跨项目
使用网关可以跨项目
网关作用:
1、路由:转发类似于中转站
2、负载均衡:在路由基础上可以随机转发到某一个机器
3、鉴权:判断用户是否有权限,无论访问什么系统进行统一鉴权
4、跨域:网关统一处理跨域
5、统一业务处理:把一些项目中都要做的通用逻辑放在公共里面
6、访问控制:黑白名单,如限制DDOS IP
7、发布控制:给新接口分配百分之二十流量
8、流量染色:添加请求头信息
9、接口保护
(1)限制大小(2)信息脱敏(3)降级(熔断)(4)限流(5)超时时间
10、统一日志:统一请求响应信息,
11、统一文档:在一个页面统一查询。
网关的分类
1、业务网关(接入层网关):作用是将请求转发到不同的业务、项目、接口、服务
2、全局网关(微服务网关):作用是负载均衡,请求日志等。不和业务逻辑绑定
实现:
1、nginx(全局网关)、kong网关(API网关)
2、Spring Cloud Gateway(取代了Zuul)性能高,可以用java代码写逻辑。
请求转发:
用一个前缀匹配路由器
第六期
- 调用其他项目的方法:(1)复制相同代码 (2)使用HTTP协议(3)使用RPC(4)将公共代码打jar包其他项目去引用
- RPC优点:更透明、向服务器发送请求时未必要使用HTTP协议。可以使用TCP/IP等、性能更高、内部服务更适用
Dubbo框架(RPC实现) 、GRPC、TRPC
使用Dubbo框架的nacos
下载完nacos在bin目录下运行cmd命令: startup.cmd -m standalone
先启动服务注册者再启动服务调用者
注意:接口在提供者和调用者包下的路径一致 最好把接口提到公共的项目中
收获:
1、intern():如果字符串s在字符串常量池中存在对应字面量,则intern()方法返回该字面量的地址;如果不存在,则创建一个对应的字面量,并返回该字面量的地址。
2、堆:JVM内存分为堆(heap)、栈(stock)、方法区(method)三个区域,分别用于储存不同的数据。 JVM只有一个堆区,在虚拟机启动时创建,被所有线程共享,堆区不放基本类型(成员变量除外)和对象的引用,只存储对象本身(包括class对象和异常对象)和数组,堆是GC所管理的主要区域(对不需要的对象进行标记,而后进行清除)
3、栈:每个线程包含一个栈区(堆只有一个所有线程共享),栈中只保存基本数据类型的对象和自定义对象的引用,对象都存放在堆区中。
4、方法区:1、方法区又叫静态区,里存储着class文件的信息和动态常量池,class文件的信息包括类信息和静态常量池。2、用于储存已被虚拟机加载的类信息、常量、静态常量、即使编译器编译后的代码等数据。3、垃圾收集行为在方法区很少出现,这块区域回收的主要目标是针对常量池的回收和对类型的卸载。4、运行常量池是方法区的一部分,常量池用于存放编译期生成的各种字面量和符号引用(还有翻译出来的直接引用),这部分内容在类加载后进入方法区的运行时常量池中存放;运行时常量池相对于Class文件常量池的另一个重要特征是具备动态性,运行期也可能将新的常量放入池中;字面量:如文本字符串,声明为final的常量值等。
浙公网安备 33010602011771号