API开放平台

API开放平台

//Todo

将写好的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签名认证:

  1. 签发签名
  1. 使用签名(校验签名)
  1. 用户参数
  1. 签名(用户参数+密钥)=》签名生成算法 (MD5、HMac、Sha1)签名认证算法:(jwt)
  1. 随机数
  1. 时间戳

实现:

  1. accessKey:调用标识userA、userB(复杂、无序、无规律)
  1. 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. 调用其他项目的方法:(1)复制相同代码 (2)使用HTTP协议(3)使用RPC(4)将公共代码打jar包其他项目去引用
  1. 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的常量值等。

posted @ 2023-07-18 09:35  鱼腻腻  阅读(114)  评论(0)    收藏  举报