Coder Social home page Coder Social logo

wwwindy777 / fengapi Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 252 KB

基于 Vue3 + SpringBoot + Dubbo + Gateway 的个人API服务平台,管理员可以接入并发布接口,用户可以开通接口调用权限、浏览接口以及在线调试,并通过客户端 SDK 调用接口,同时开发者用户可以在平台上传并发布接口

License: MIT License

JavaScript 0.47% HTML 0.22% Vue 13.64% TypeScript 19.93% Java 65.75%

fengapi's Introduction

项目介绍

该项目是一个基于 Vue3 + SpringBoot + Dubbo + Gateway 的个人API开放平台,旨在提供一个类似于腾讯API平台的接口管理和调用平台。管理员可以接入并发布接口,用户可以开通接口调用权限、浏览接口以及在线调试,并通过客户端 SDK 调用接口,同时开发者用户可以在平台上传并发布接口

此项目为个人学习项目,任何人都可以免费使用。目前在搭建基本框架的基础上仅完成了API平台主要的功能,如果想上线使用还有很多功能待完善,如果对此项目感兴趣欢迎一起交流学习

该项目前端仅为测试接口和展示平台效果,比较简陋,但也足以体现项目的主要**。所以以下项目介绍以后端为主,前端部分请自行查看源码

项目背景

随着互联网的快速发展和数字化转型的推进,越来越多的组织和个人开始提供各种类型的API(应用程序编程接口),用于实现不同系统之间的数据交互和功能集成。API的广泛应用使得开放平台逐渐成为互联网行业的一个重要组成部分

腾讯API平台作为国内知名的API开放平台之一,提供了丰富的接口资源和灵活的接口管理工具,帮助企业和开发者轻松构建自己的应用生态系统。然而,对于个人开发者和小型组织而言,接入和使用腾讯API平台可能存在一定的门槛和限制

因此我想开发一个仿照腾讯API平台的个人API开放平台,旨在为个人开发者、小型组织以及其他希望提供API服务的用户提供一个简单易用、灵活可扩展的接口管理和调用平台

本项目采用了现代化的技术栈,包括Vue3作为前端框架、SpringBoot作为后端框架,以及Dubbo作为微服务框架和Gateway作为API网关,以确保系统的性能、稳定性和扩展性

功能特性

  • 管理员功能:
    • 接入并发布接口:管理员可以接入第三方接口,并在平台上发布它们,方便用户调用
    • 路由管理:根据接口定制网关路由,实现接口细粒度的管理
    • 可视化接口状态和调用情况:管理员可以通过平台界面直观地查看各接口的状态和调用情况
  • 用户功能:
    • 开通接口调用权限:用户可以请求开通某个接口的调用权限,待管理员审核通过后即可使用
    • 浏览接口:用户可以在平台上浏览已发布的接口,并查看其相关信息和文档
    • 在线调试:用户可以通过平台提供的在线调试工具对接口进行调试和测试
  • 开发者用户功能:
    • 上传并发布接口:开发者用户可以在平台上上传自己开发的接口,并发布到平台供其他用户调用
  • 平台功能:
    • 统一鉴权:通过给用户签发签名(accessKey,secretKey)实现API签名认证,保证接口调用安全
    • 动态路由:网关的路由设置不在配置文件写死,启动时从数据库动态加载,并在使用过程中通过调用网关暴露的接口实现路由的动态管理

技术栈

后端

  • Java 1.8
  • Spring Boot 2.x
  • MyBatis (Plus)
  • MySQL
  • Redis
  • Spring Cloud Gateway
  • Nacos
  • Dubbo
  • Gson
  • Hutools

前端

  • Vue3全家桶
  • TypeScript
  • Element Plus
  • Vite
  • Axios

项目架构图

业务架构图

fengapiservice

动态路由实现

fengapigatewayroute

项目模块

  • fengapi_backend:API平台后端主模块,提供用户管理,接口管理,网关路由管理等功能
  • fengapi_gateway:网关模块,对开放API的调用进行统一管理,实现了动态路由、访问控制、接口限流,并集中处理签名校验、请求参数校验、接口调用统计等业务逻辑
  • fengapi_common:公共服务接口模块,为实现模块之间RPC调用抽象出的服务接口
  • fengapi_client:API调用客户端SDK,主要为了打包成工具包,开发者在项目中直接引入即可轻松调用接口
  • fengapi_interface:提供一些简单的测试接口方便开发过程中调试

项目开发初期并没有作为微服务项目去构建,之后功能逐渐完善后会更细致的划分出各个微服务模块

快速开始

前端

  1. 下载源码后进入fengapi_frontend目录
  2. 在项目根目录打开终端执行:pnpm install安装依赖
  3. 执行vite 命令运行项目

后端

  1. 安装maven依赖
  2. 用maven打包fengapi_common模块到本地仓库,并确保项目中引入该模块的坐标正确
  3. 执行fengapi.sql中的建表语句创建数据库表
  4. 修改配置文件中的数据源配置
  5. 安装Nacos并启动
  6. 修改fengapi_backend和fengapi_gateway模块中的Dubbo配置

关于Nacos和Dubbo的配置请参考官方文档

  1. 依次启动fengapi_backend,fengapi_gateway,fengapi_interface
  2. 进入fengapi_client,找到Test测试类测试接口调用

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.