1 Star 0 Fork 0

知识汲取者/api-hub-fe

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

api-hub项目介绍文档

前言

  api-hub项目是一个集成市面上各种免费好用接口的项目,项目名hub是我对Github开源平台的致敬,项目的创建之初是能够成为一个集成各类有趣、有用,且提供免费接口调用服务的平台。目前项目已经算是大致完成了,项目的主要功能接口调用功能也都完成了,后续还将继续完善(以后的完善目标在未完待续部分中有写)

==注意==:由于服务器配置太低了,带不动,上线后经常出现CPU飙升100%的情况,所以项目已经下线了┭┮﹏┭┮ 。没办法,我已经把各种参数设置的相当的低了,还是会出现经常性的CPU飙升100%,亏我还浪费了大把时间在这部署上面

image-20230911122300182

功能介绍

这里就主要介绍后端提供的功能吧,前端就不过多介绍了(前端无非就是发请求、样式调整,逻辑性的东西不是很多,如果前端大佬看到了我这句评价,别喷我,我只是对于本项目前端的一个看法,并不是对所有的前端项目是这个看法,我就一个前端小菜鸡(●'◡'●),也就只会发发请求、改改样式,然后就是CV一下其它人写好的组件🤣)

  1. 登录功能:包括账号密码登录、第三方平台(含Github、Gitee、QQ、微博)授权登录。

    对于第三方授权登录,单独开发了一个SDK:auth-login-sdk,该 SDK 参考了 JustAuth 开源项目,其中通过应用 适配器模式 抽象出一个 AuthRequest 类实现对各大平台接口的统一,应用 模板方法模式 实现重复代码(比如通用请求的发送、通用URL前缀的拼接)的抽取,大大提高项目的可维护性,应用 工厂模式 + 单例模式 实现统一的各平台实现类对象的获取操作,并且利用 SpringBoot提供的 SpringContext 类根据对应的 BeanName 获取对应的 实现类,大大简化了对象的创建与获取操作,同时应用 建造者模式 提供更加灵活的对象创建

  2. 注册功能:用户输入账号密码、输入验证码即可完成注册。

    对于验证码的获取,单独开发了一个SDK:sms-email-sdk,该 SDK 参考了 SMS4J 开源项目,其中通过 适配器模式 抽象出一个通用的 SmsEmailRequest 类实现对给平台提供的 SMS 服务和 Email 服务接口进行统一(当然 Email 服务SpringBoot已经进行了统一,主要是对 SMS 服务接口进行统一),应用 模板方法模式 实现重复代码的抽取,大大简化项目中的重复性代码,同时也应用了 单例默认+工厂模式 实现统一的各平台实现类对象的获取操作,同时利用 SpringBoot 提供的自定义 starter 功能,提高配置设置的简便性和可维护性。

    同时对于短信验证码的发送,我利用了RabbitMQ实现了异步发送,减少了程序阻塞的时间,提高了系统的性能,同时在发送之后利用 setnx 标记一下要发送验证码的手机或邮箱,一定程度上防止了消息重复消费的可能

  3. 登录拦截功能:通过利用 JWT + 登录拦截器实现登录拦截功能,对于系统首页,只有登录用户才能访问,提高系统的安全性,同时自定义授权注解,对于一些特定的接口(比如用户信息的查询、用户信息的修改)只有管理员可以访问

  4. 退出功能:用户登陆系统后,可以直接点击右上角头像进行退出

  5. 文件上传下载功能:后端提供了一个统一的文件上传接口,该接口实现了分片上传断点续传单文件上传等常见功能。

    对于文件上传和下载,单独开发了一个 SDK:file-storage-sdk,整合里目前市面上主流的 OSS服务,比如阿里云、腾讯云、七牛云,同时也支持本地存储,后续还将整合 Mino 文件存储服务,同时提供了对OSS文件的增、删、改、查、批量操作

  6. 用户信息的CRUD:即对用户信息的新增、删除(根据id删除、批量删除)、修改(根据id修改)、查询(根据id查询、分页条件查询),当然这个功能仅对管理员开发!

  7. 接口信息的CRUD:即对接口信息的新增、删除(根据id删除、批量删除)、修改(根据id修改)、查询(根据id查询、分页条件查询),当然这个功能仅对管理员开发!

  8. 忘记密码功能:用于输入账号、新密码、验证码即可完成项目的注册。

  9. 接口限流功能:对于重要接口,比如接口调用功能、获取短信验证码、登录功能进行一个限流,防止用户恶意刷量导致系统瘫痪,也能一定程度防止 Ddos 攻击,防止不必要是损失。

    对于接口限流的实现,单独开发了一个SDK:request-limiter-sdk ,主要集成了常见的几种限流算法,比如:固定窗口计数器限流算法、滑动窗口计数器限流算法、漏桶限流算法、漏桶限流算法,同时也整合了谷歌 Guava工具包提供的比较出名的先流泪 RateLimiter ,最后利用 策略模式 实现算法实现类的任意切换,大大提高了项目的灵活性和可维护性

  10. 接口调用功能:这个功能借鉴了 dianping 项目中对于秒杀那一块的逻辑,属于整个项目的核心业务了,并且这个是接口是唯一横跨整个项目(包括了 api-hub-admin、api-hub-gateway、api-hub-interfas)的,前后对这个接口进行了多次压测优化,关于本项目压测方面的记录可以参考 api-hub压测文档 ,其中利用 乐观锁(基于CAS机制实现)防止并发下的超卖问题,添加 Redis 缓存,对于接口基本信息查询,采用缓存空对象接口了缓存穿透问题,同时采用双写方案解决数据不一致行问题(更加侧重读性能),对于接口是否存在的判断我利用 path 和 method 字段的唯一性来判断,并且缓存到 Redis ,采用读写穿透方案保障数据的一致性问题(更加侧重写性能),对于接口调用次数的扣减,我单独封装一个 lua 脚本,确保操作的原子性,同时利用RabbitMQ实现异步实现数据库的更新,大大减轻数据库的压力

    下面是一个大致的流程图(画的比较简陋O(∩_∩)O),但是请求大致的走向以及操作的数据源是Redis还是MySQL这个是有所标记的

    image-20230911135703892

    接口调用时序图

    当然对于接口的信息,我对于接口的path-method信息利用了全量同步实现了数据预热,防止发生缓存穿透的风险,因为这一块的数量比较小所以就直接项目启动时进行全量同步,对于接口的基本信息,由于数据比较多,我就直接利用了 增量更新,利用 Scheduled 注解设置一个定时任务,每隔三分钟进行一次定时更新,但是存在一个弊端,有一定的数据延迟!!!如果我对接口信息进行了修改,恰巧当前正好的新的三分钟的开始,会导致接口信息无法查询,当然这个概率还是出现的比较少的,因为接口信息只能由管理员修改,管理员一般发布后的接口都是很少去变动的。对于接口的判断服务,我采用 Dubbo 实现内部服务之前的调用,让 api-hub-gateway 项目能够直接调用 api-hub-admin提供的服务

  11. 第三方调用功能:每一个用户都分配了一个 accessKey 和 secretKey,用户通过在自己的项目中引入 api-feign-sdk 依赖,即可实现对自己开通接口的调用服务,该依赖已经打包发布到Mavne中央仓库了,可以直接引用

                <!--接口调用SDK-->
                <dependency>
                    <groupId>io.gitee.aghp</groupId>
                    <artifactId>api-feign-sdk</artifactId>
                    <version>0.0.1</version>
                </dependency>
    

    对于 api-feign-sdk ,我通过利用SpringBoot提供的自定义 starter 功能,实现方便快捷的配置加载,该依赖的主要作用就是对 请求进行签名。api-hub-gateway 网关模块内部编写了一个拦截器,会拦截对接口的所有请求,只有认证通过之后才能够访问接口,提高安全性,同时内部也对所有认证成功的请求进行一个流量染色,防止直接跳过网关请求接口,进一步提高接口的安全性

    这个功能也算是比较核心的功能了,流程图先省略了,后面补上(后面后时间我会将这所有功能的流程图补上(●ˇ∀ˇ●))……

项目演示

==在使用 API Hub 项目前建议先看一看下面这些小提示**(●'◡'●)**==

温馨提示

  1. 项目访问起来可能比较慢,需要您耐心等待一会。因为项目部署的服务器是白嫖阿里云的,是 ESC 2核2G的云服务器,内存比较小,能运行我这个项目也是十分万幸了,项目环境我下载了很多东西,比如:JDK、宝塔、Nginx、RabbitMQ、Nacos、Redis、MySQL、Docker、前端项目文件、后端项目文件(关一个Nacos注册中心+MySQL就占了 1G多┭┮﹏┭┮),这些东西加起来就直接就把内存撑满了,并且还需要占据运行内存,我是运行这些服了 JVM 参数都设置相当小了,不然一运行服务器 CPU 就直接100%,卡的动都动不了,感兴趣的可以看一下这篇我的踩坑记录:Docker运行Nacos容器,过一会就报错UnsatisfiedDependencyException_知识汲取者的博客阿里云ESC服务器CPU一直处于100%该如何排查?_知识汲取者的博客

  2. 虽然项目中我使用了腾讯云OSS服务,但是项目中的常见图片,比如项目封面图片、项目logo、项目默认头像第一次访问会很慢,因为看到网上好多都因为OSS流量被盗刷导致网站”破产了“,看到有人说自己设置了防盗链、流量限制也没用,主要是腾讯云OSS服务欠费了不会自动关停,会一直欠下去,这就导致如果你被不怀好意的人盯上了,一下就欠费成千上万。我也有点担心,所以我这些常用图片都是直接采用公共图床服务,公共图床肯定没有服务的腾讯云OSS快😫,所以大家初次访问可能有些图片加载不出来,可以尝试着多刷新几次页面

    比如:关于我阿里云OSS被盗刷20TB流量 - 知乎 (zhihu.com)

  3. 对于第三方授权登录,如果是新浪微博登录,由于新浪微博对图片添加了防盗链,所以登陆成功后,点击个人中心是会发现头像加载失败

    如果是 Github 登录,会出现,由于我在在项目内部已经配置了代理,但是因为授权是需要在浏览器进行页面跳转的,所以也可能会出现失败,如果你想使用Github登录,最好还是开启代理进行登录,当然我也并不是说一定要开代理才能进行Github登录,这个要靠缘分,就比如平常我们大部分时候也是能够直接访问Github的,但是如果使用Github登录成功后,你没有开启代理,个人中心的头像可能也会出现加载失败,这个需要多刷新几次,毕竟Github服务器在国外。当然我还是推荐大家使用 Gitee或者QQ登录

前台演示

  • 登录注册页面

    image-20230911122647641

    image-20230911183010897

    image-20230911183211858

    image-20230912143052946

    image-20230912151904810

    image-20230912151938440

    image-20230912143110173

    image-20230911183450727

    image-20230911214424004

    image-20230911183426712

    image-20230911184447978

    image-20230911221048851

    image-20230911234631957

  • 接口商店

    image-20230911215719298

  • 个人中心

    image-20230911215735046

  • 接口管理

    image-20230911220819800

    image-20230911220835656

后台演示

后端好像也没什么好演示的,这里就大致展示一下项目的目录结构吧(●'◡'●),同时也展示一下在线客户端页面🤣

  • 后端在线接口文档

    image-20230911184149738

    image-20230911184231630

  • RabbitMQ在线客户端

    image-20230911184107516

    image-20230911184132933

  • 宝塔面板在线客户端

    image-20230911154110375

    image-20230911183950237

技术选型

前端技术选型

技术 说明 文档
HTML 网页结构 https://developer.mozilla.org/zh-CN/docs/Web/HTML
CSS 网页样式 https://developer.mozilla.org/zh-CN/docs/Learn/CSS
React v18.2.0 前端框架 https://react.docschina.org/
NodeJS v16.13.0 前端依赖的环境 https://nodejs.org/en
Type Script v5.2.2 JS的超集 https://www.tslang.cn/
ant design pro v5.2.2 前端脚手架 https://pro.ant.design/zh-CN/
ant design pro-components 前端UI框架 https://procomponents.ant.design/
spark-md5 v3.0.2 计算文件的md5值 https://www.npmjs.com/package/spark-md5
Axios0.17.0 前端HTTP框架 https://github.com/axios/axios
echarts v5.4.2 数据可视化组件 https://echarts.apache.org/zh/index.html

前端项目的所有依赖:

    "dependencies": {
        "@ant-design/icons": "^4.8.0",
        "@ant-design/pro-components": "^2.3.57",
        "@ant-design/use-emotion-css": "1.0.4",
        "@umijs/renderer-react": "^4.0.70",
        "@umijs/route-utils": "^2.2.2",
        "antd": "^5.2.2",
        "classnames": "^2.3.2",
        "echarts": "^5.4.2",
        "echarts-for-react": "^3.0.2",
        "lodash": "^4.17.21",
        "moment": "^2.29.4",
        "omit.js": "^2.0.2",
        "prismjs": "^1.29.0",
        "rc-menu": "^9.8.2",
        "rc-slider-captcha": "^1.2.0",
        "rc-util": "^5.27.2",
        "react": "^18.2.0",
        "react-dev-inspector": "^1.8.4",
        "react-dom": "^18.2.0",
        "react-helmet-async": "^1.3.0",
        "react-simple-code-editor": "^0.13.1",
        "spark-md5": "^3.0.2"
    }

后端技术选型

技术 说明 文档
JDK1.8 Java8 https://www.java.com/zh-CN/
SpringBoot2.5.0 Web应用开发框架 https://spring.io/projects/spring-boot
SpringSecurity 认证和授权框架 https://spring.io/projects/spring-security
MyBatisPlus3.4.3 ORM框架 http://www.mybatis.org/mybatis-3/zh/index.html
MyBatisGenerator 数据层代码生成器 http://www.mybatis.org/generator/index.html
Redis6.2.6 缓存数据 https://redis.io/
MySQL8.0.27 持久化存储数据 https://www.mysql.com
SpringCloud 微服务框架 https://spring.io/projects/spring-cloud/
Rabbitmq 消息队列 https://www.rabbitmq.com/
Nacos 注册中心 https://nacos.io/zh-cn/docs/quick-start.html
OSS 对象存储 https://github.com/aliyun/aliyun-oss-java-sdk
SMS 短信服务 https://www.aliyun.com/product/sms
Dubbo``Lombok1.8.24 RPC框架Java语言增强库 https://cn.dubbo.apache.org/zh-cn/[https://github.com/rzwitserloot/lombok](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Frzwitserloot%2Flombok)
PageHelper MyBatis物理分页插件 http://git.oschina.net/free/Mybatis_PageHelper
Swagger-UI2.0.2 API文档生成工具 https://github.com/swagger-api/swagger-ui
Knife4j3.0.3 API文档生成工具 https://doc.xiaominfo.com/
Validation-api 参数校验 https://beanvalidation.org/
FastJson1.2.23 序列化反序列化 https://github.com/alibaba/fastjson/
Jwt0.9.0 JWT登录支持 http://jboot.com.cn/docs/jwt.html
Hutool Hutool工具包 https://gitee.com/dromara/hutool
Apache Commons Lang3 工具包 https://commons.apache.org/proper/commons-lang/

后端项目的所有依赖:

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>

        <api-hub-admin.version>0.0.1</api-hub-admin.version>
        <api-hub-common.version>0.0.1</api-hub-common.version>
        <api-hub-gateway.version>0.0.1</api-hub-gateway.version>
        <api-hub-interfas.version>0.0.1</api-hub-interfas.version>
        <api-feign-sdk.version>0.0.3</api-feign-sdk.version>
        <auth-login-sdk.version>0.1.2-SNAPSHOT</auth-login-sdk.version>
        <file-storage-sdk.version>0.0.1</file-storage-sdk.version>
        <sms-email-sdk.version>0.0.4</sms-email-sdk.version>

        <spring-boot.version>2.7.2</spring-boot.version>
        <spring-cloud.version>2021.0.7</spring-cloud.version>
        <mybatis-plus.version>3.5.2</mybatis-plus.version>

        <knife4j.version>3.0.3</knife4j.version>
        <gson.version>2.9.1</gson.version>
        <easyexcel.version>3.1.1</easyexcel.version>
        <hutool-all.version>5.8.8</hutool-all.version>
        <jwt.version>0.9.1</jwt.version>

        <maven-compiler-plugin.version>3.10.1</maven-compiler-plugin.version>
        <maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version>
    </properties>


    <dependencyManagement>
        <dependencies>
            <!--后台管理模块-->
            <dependency>
                <groupId>com.ghp</groupId>
                <artifactId>api-hub-admin</artifactId>
                <version>${api-hub-admin.version}</version>
            </dependency>
            <!--网关模块-->
            <dependency>
                <groupId>com.ghp</groupId>
                <artifactId>api-hub-gateway</artifactId>
                <version>${api-hub-gateway.version}</version>
            </dependency>
            <!--通用模块-->
            <dependency>
                <groupId>com.ghp</groupId>
                <artifactId>api-hub-common</artifactId>
                <version>${api-hub-common.version}</version>
            </dependency>
            <!--接口提供模块-->
            <dependency>
                <groupId>com.ghp</groupId>
                <artifactId>api-hub-interfas</artifactId>
                <version>${api-hub-interfas.version}</version>
            </dependency>
            <!--接口调用SDK-->
            <dependency>
                <groupId>io.gitee.aghp</groupId>
                <artifactId>api-feign-sdk</artifactId>
                <version>${api-feign-sdk.version}</version>
            </dependency>
            <!--整合第三方登录的SDK-->
            <dependency>
                <groupId>io.gitee.aghp</groupId>
                <artifactId>auth-login-sdk</artifactId>
                <version>${auth-login-sdk.version}</version>
            </dependency>
            <!--整合OSS服务SDK-->
            <dependency>
                <groupId>io.gitee.aghp</groupId>
                <artifactId>file-storage-sdk</artifactId>
                <version>${file-storage-sdk.version}</version>
            </dependency>
            <!--整合SMS服务-->
            <dependency>
                <groupId>io.gitee.aghp</groupId>
                <artifactId>sms-email-sdk</artifactId>
                <version>${sms-email-sdk.version}</version>
            </dependency>
            <!--接口限流SDK-->
            <dependency>
                <groupId>io.gitee.aghp</groupId>
                <artifactId>request-limiter-sdk</artifactId>
                <version>0.0.1</version>
            </dependency>
            <!-- SpringBoot的依赖配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- Spring Cloud 依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--MyBatisPlus-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>
            <!--Knife4j-->
            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>knife4j-spring-boot-starter</artifactId>
                <version>${knife4j.version}</version>
            </dependency>
            <!--Hutool工具包-->
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>${hutool-all.version}</version>
            </dependency>
            <!--Jwt-->
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt</artifactId>
                <version>${jwt.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

组织架构

这一部分的业务流程图组织结构图系统架构图,后续将会陆续补充,敬请期待中(●'◡'●)……

略……o((>ω< ))o

前端组织结构

略……o((>ω< ))o

后端组织架构

略……o((>ω< ))o

模块介绍

前端模块介绍

前端就一个模块,后端管理页面和前台用户界面共享,通过配置动态路由实现不同角色展示不同页面,话说这个ant desgin 是真好用,越用越爽😄简直是我这种前端小菜鸡的最爱

image-20230911162247925

后端模块介绍

image-20230911161749307

  • api-hub-be:项目父模块,用于对依赖进行版本控制
  • api-hub-admin:项目管理模块,也是项目的主要模块,为前端模块提供了接口,对内部的 api-hub-gateway 也提供了服务接口,起到一个承上启下的作用
  • api-hub-gateway:网关模块,提供了对于接口请求的一个认证,包括黑白 IP 名单控制、流量染色、签名认证
  • api-hub-interfas:提供接口服务,内部或是调用本项目自带的服务接口,要么是调用互联网上其它免费的接口服务

项目环境搭建与运行

前端项目搭建与运行

npm i
npm run dev

启动成功后,即可在浏览器中访问http://localhost:8000/

后端项目搭建与运行

  1. 首先确保有Java8的环境

  2. 下载,使用IDEA打开

  3. 刷新Maven加载依赖(如果没有配置镜像,依赖加载可能会很慢)

  4. 将 SQL 文件导入你的数据库,SQL文件在项目中有

  5. 将配置文件中 MySQL、Redis、RabbitMQ、Nacos等 host、username、password等属性配置成你自己的即可

    需要注意的是,一定要先启动服务提供方(api-hub-admin),然后启动服务消费方(api-hub-gateway),否则会启动失败

  6. 启动成功后,即可访问在线接口文档http://localhost:8101/api/doc.html

    如果前台也已启动,则可以直接访问前端页面了

项目部署

详情请参考我的【api-hub项目部署文件】,现在还未发布,等过段时间发布。项目后端相关服务都是直接采用 Docker 化容器部署,通过编写 Dockerfile、 DockerCompose、Shell脚本,实现一条指令自动化部署,相较于传统部署大大减轻了部署负担、节约了部署时间,前端采用了宝塔部署,宝塔提供可视化面板以及响应的简化操作,能够节约很多时间,同时管理前端项目、修改Ngxin配置文件也很方便

如何使用本项目提供的接口服务

==注意==:由于我这个项目目前设置了IP黑白名单,目前白名单只有我的服务器IP能够调用,如果你想调用本项目提供的接口服务,可以联系我,我可以将您添加到白名单中,后续等项目逐渐完善后,我就会开放整个项目提供的接口,这样大家就都能够快乐的调用了,同时项目我也会逐渐添加一些我收集的有用、有趣的接口

  • Step1:引用 api-feign-sdk 依赖

                <!--接口调用SDK-->
                <dependency>
                    <groupId>io.gitee.aghp</groupId>
                    <artifactId>api-feign-sdk</artifactId>
                    <version>0.0.3</version>
                </dependency>
    

    当然也支持直接下载到本地,下载地址:

    该依赖版本可能会不定期进行更新,最新版可以直接到Maven中央仓库进行搜索下载:Maven Central (sonatype.com)

    image-20230912155034752

    image-20230912155040948

  • Step2:登录网站 http://api-hub.知识汲取者.top/

    在个人中心获取你的 accessKey 和 SecretKey,在项目的配置文件中引用

    image-20230912162739905

    api:
      feign:
        access-key: xxxx
        secret-key: xxxx
    
  • Step3:调用接口

    // 在你想要使用的地方注入
    @Resource
    prvate ApiClient apiClient;
    // 调用接口
    responseResult = apiClient.invokeInterface(requestParams, url, method);
    

未完待续

项目整体算是开发完成了,但是我还想新增一些功能,同时对现有功能进行优化

  • 现有功能优化

    1. 利用双Token自动续期实现无感知刷新。(重要)

      目前项目中使用的是单Token登录校验,这样存在一个问题,当 token 过期了,用户会被强制下线,这个对用户体验不太好

    ……

  • 预期新增功能

    1. 对普通用户开放一个接口提交通道。(重要)

      当前项目只有管理员才能够发布接口,对于普通用户只能调用接口和开通接口,无法进行发布接口,这显然是违背了我项目的初心的,我项目的初心是为了打造一个人人都可以共享接口的平台。但是需要注意的是如果新增了接口提交通过,需要添加一个接口审核

    2. 记住我功能。(不重要)

      这个功能算是很简单的了,我也不太打算增加了O(∩_∩)O,因为目前浏览器好像就自带了这个功能,属于

    ……

这里暂且先列举这些吧,后续慢慢优化补充,然后不断迭代更新这个项目,当然如果你有更好的注意或者想法欢迎与我交流(●'◡'●)

这是我的邮箱:3254213612@qq.com

结语

截至目前为止,这算是我第二个部署上线的项目,第一个是 blog: 博客管理系统 (gitee.com) ,也是第四个比较完整的项目了,之前开发过比较完整^1的项目有:reggie-take-out((SpringBoot练手项目))、hm-dianping((Redis练手项目))、aggregate-search-platform-be((ElasticSearch练手项目))、intelligent-bi-be等,此外在开发这个项目期间,我自己也开发了许多方便好用的 SDK,比如:auth-login-sdk(整合常见的第三方授权登录)、sms-email-sdk(整合常见的第三方SMS服务和Email服务)、file-storage-sdk(整合常见的OSS服务)、request-limiter-sdk(整合常见是限流算法)

  api-hub项目开发总时间跨度是一个半月,开发期间遇到了很多很多bug,这里就不一一列举了,感兴趣的,可以参考【api-hub项目开发踩坑记录】,虽然遇到 bug 是一件令人苦恼的事情,但是这些东西在我看来也是十分珍贵的,它就是你的开发经验、它就是检测你对知识的熟练程度,能够让我对某些知识有更加深刻的认知,当然遇到 bug 在开发项目中是不可避免的,重点是我们要学会总结 bug,通过这些 bug 锻炼自己解决 bug 的能力,通过这些 bug 提高我们对一些知识的重视(感兴趣的可以关注我博客的 Bug记录专栏,这个专栏记录了我平常开发中遇到的各种bug,同时附带了对bug产生原因的分析和bug的解决方案)

整个项目总计 8753 行,其中 Java 代码共 7278 行、Lua 脚本 62 行

image-20230912194336503

源代码行数为 3778 占比 52%,注释行数为 2498 占比 34%,代码与注释的占比为 5:3,这个比例我也不知道合不合理w(゚Д゚)w

image-20230912194619402

  开发api-hub项目对我的提升。api-hub项目的核心业务逻辑是借鉴了之前写的 Redis练手项目,让我对 Redis有了更加熟练的使用,同时也提高了我对接口优化的思路,比如:同步转异步、常用数据加缓存、高并发下的限流、setnx保障幂等性……也重新熟悉了缓存穿透、缓存击穿、缓存更新不一致性问题的常见解决方案,掌握了Dubbo、Nacos等微服务组件的基本使用。

  有待提高的地方。当前项目并没有应用SQL优化技巧,这一点我感觉我现在还停留在纸上谈兵的境界,还没有实战过,虽然常见的SQL优化我也都有所了解,并且自己也跟着B站黑马老师进行过SQL语句的调优,但是还没有在自己项目中实战过,顶多就算一个 limit 优化,但是自己项目中的数据也比较少,完全达不到 limit 优化的门槛 w(゚Д゚)w,希望以后能够在公司里实战吧

最后,如果您觉得本项目对你有所帮助,欢迎打赏(●ˇ∀ˇ●)

image-20230911220420787

空文件

简介

一个免费开源、简单易用的API接口服务平台 展开 收起
取消

发行版

暂无发行版

贡献者 (1)

全部

近期动态

1年多前推送了新的提交到 master 分支,e8c5716...72528c6
1年多前推送了新的提交到 master 分支,ea7cd1a...e8c5716
1年多前推送了新的提交到 master 分支,d4bc31e...ea7cd1a
接近2年前推送了新的 master 分支
接近2年前创建了仓库
加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/aghp/api-hub-fe.git
git@gitee.com:aghp/api-hub-fe.git
aghp
api-hub-fe
api-hub-fe
master

搜索帮助