API接口项目

一、项目概要

本项目是一个面向开发者的API平台,提供API接口供开发者调用。用户通过注册登录,可以开通接口调用权限,并可以浏览和调用接口。每次调用都会进行统计,用户可以根据统计数据进行分析和优化。管理员可以发布接口、下线接口、接入接口、并可视化接口的调用情况和数据。本项目侧重于后端,涉及到多种编程技巧和架构设计层面的知识。

二、项目介绍

一个提供API接口工开发者调用的平台

管理员可以发布接口,同时统计分析个接口的调用情况,用户可以注册登录并开通接口调用权限,浏览接口以及在线进行调试,并可以使用SDK轻松得在代码中调用接口。该项目前端简单,后端丰富,涵盖编程技巧和架构设计等多个技术领域。

三、项目源码

等我写完再放。

四、项目准备工具

前端开发:

nodejs安装和环境配置

WebStorm安装教程 或 [vscode安装j教程]

后端开发:

IDEA 安装教程

Java/JDK安装教程

Maven安装与配置

其他工具:

MySQL的安装与配置

Redis安装流程

yarn下载

Yarn 安装教程

Git的下载安装

注意:

  • nodejs版本大于16.14,小于18版本
  • idea版本在2021年以上

五、项目业务流程

1、流程概述

5个子系统:

  1. 模拟接口系统:提供各种模拟接口供开发者使用和测试,例如,提供一个随机头像生成接口。
  2.  后台管理系统:管理员可以发布接口、设置接口的调用数量、设定是否下线接口等功能,以及 查看用户使用接口的情况,例如使用次数,错误调用等。
  3. 用户前台系统:提供一个访问界面,供开发者浏览所有的接口,可以购买或开通接口,并获得 一定量的调用次数。
  4.  API 网关系统:负责接口的流量控制,计费统计,安全防护等功能,提供一致的接口服务质 量,和简化 API 的管理工作。
  5.  第三方调用 SDK 系统:提供一个简化的工具包,使得开发者可以更方便地调用接口,例如提 供预封装的 HTTP 请求方法、接口调用示例等

需要考虑的关键问题和挑战

  1. 接口设计:需要设计清晰易用的 API 接口,并且提供详细的接口文档,以方便开发者使用。
  2. 性能和可用性:平台需要承载大量的接口请求,因此需要考虑到性能和可用性问题。例如,设 计高效的数据存储和检索策略,确保 API 网关的高性能等。
  3. 安全:平台需要防止各种安全攻击,例如 DDOS 攻击,也需要保护用户的隐私和数据安全。
  4. 计费和流量控制:需要设计合理的计费策略和流量控制机制,以确保平台的稳定运行和收入来 源。
  5. 易用性和用户体验:需要为开发者提供简单易用的接口调用工具和友好的用户界面,提供优质 的用户体验。

2. 详细说明

需要注意的问题及知识

        ❗ 注意:在实现接口调用时,如果要作为一个开放平台,不要轻易免费开放接口,因为这会极大地 增加平台被攻击的风险,导致服务器瞬间被 DDOS 攻击瘫痪。

        💡 在调用这个接口时需要考虑以下问题:

  1. 需要考虑访问权限的问题:用户是否可以随意访问数据库和接口。
  2. 需要添加计费功能,统计用户调用次数,并考虑限流或流量保护措施。
  3. 需要考虑如何有效地管理用户。(例如,如果用户欠费或者是陌生人调用接口,我们需要及时发 现并采取措施)

        🪔 有没有听说过 API 网关?

        API 网关的主要作用是为多个接口提供保护,并集中进行计费、健全日志等逻辑处理。类似于我们 去火车站坐高铁一样,无论是去哪个站台坐哪个火车,都需要先通过检票口进行集中的检票。 与我们程序中的 AOP 不同,API 网关是一个独立的服务,需要单独开通。

        🪔 什么是 SDK?

        SDK 是软件开发工具包的缩写,是一种为软件开发者提供支持的一系列工具、接口和规范的集合。 举个例子,比如腾讯云提供了一些接口,比如创建 VPC 等,如果开发者直接向腾讯云服务器发请 求,需要输入密钥、做签名认证等操作,非常繁琐。因此,在构建第三方 API 平台时,一般都会提 供一套 SDK,让使用者能够轻松地调用接口,无需自己编写和封装 HTTP 请求。可以把 SDK 理解 为 Java 语法中的工具包,使用者只需要最少量的代码即可调用接口,如果不理解 SDK,需要加强 Java 语法的学习。

        首先,管理员可以发布接口并将其存储到数据库中,设置接口的调用数量和上下线接口状态。例 如,发布一个免费的随机头像接口,它将有一个地址(比如:yupi.icu/img)并保存到数据库中, 这里需要一个后台管理系统。 现在,我们的用户是开发人员,他们如何使用这个接口呢?为此,我们需要提供一个访问界面,我 们称其为用户前台。用户通过前台浏览所有的接口,当找到所需接口时,可以购买或开通接口,获 取一定量的调用次数,例如一万次或一千次等。开通接口后,开发者可以调用接口的 API,系统从 数据库中获取相关数据并进行调用;同时,管理员可以在后台进行相关的操作(如下图所示)。

         举个例子,腾讯云提供各类开放接口,其中有他们自己开发的或者是与第三方合作开发的。而在该 项目中,由于目前没有第三方,所以我们需要自己提供这些接口。因此,在该项目中,将会带领大 家开发模拟接口——这是需要开发的第三个子系统,我们可以随意开发一些类似 helloworld 的小 接口,然后将整个流程打通。 后续当你开发额外的接口时,可以自己开发并提供给用户。如果你使用了第三方接口平台,你需要 向对方提供接口文档,就像腾讯云的 API,其中有很多功能接口,每个接口都需要提供相应的文 档,否则用户将不知道如何使用这些接口。这种情况在使用第三方接口时很常见,有时用户看文档 时感到困惑,觉得文档难懂或不够清晰。为解决这个问题,我们最好提供在线调试功能,让用户能 够立即知道如何使用接口。此外,为了方便用户,我们可以提供一些示例代码,让他们可以直接复 制粘贴到自己的项目中。因此,我们的项目中应该提供接口文档和在线调用功能(如下图所示)。

在作为第三方接口平台的时候,我们需要考虑到防止攻击、统计调用次数、计费流量保护等方面的 问题。然而,如果我们需要给用户提供大量的接口,单独为每个接口开发计费统计、流量保护等功 能可能会成为一项繁琐的工作。因此,我们可以考虑使用一些通用的解决方案,例如使用 API 网关 来管理接口,统一进行流量控制、计费统计等操作。这样可以减少重复开发的工作量,提高开发效 率。 目前,实现 API 网关的方式有多种,例如 Kong、Nginx、Gateway 和 Spring Cloud 的 Gateway 扩展等。企业中也可能会使用自建 API 网关。此外,Kong 实际上是对 OpenResty 的一 种封装,同时也是对 Nginx 服务器的上层扩展,因此,熟练掌握 Nginx 服务器的使用将有助于理 解 API 网关的实现。总的来说,熟悉 Nginx 服务器的开发人员应该更容易实现 API 网关。如果大 家对这些技术还不太了解,那这个项目将会帮助大家拓宽视野。这些技术都是架构层面或微服务层 面的技术,在企业实战层面是必不可少的。 这个项目需要包含多个子系统,但光有这些还不足以完成整个项目,因为我们还需要为其他开发者 提供一个第三方接口调用平台。在这个平台中,我们将提供一个下载示例代码的 SDK,以便其他开 发者可以更方便地使用我们的接口。因此,我们还需要开发一个小系统,即第三方接口调用的 SDK。 目前,我们已明确了该项目五个主要平台,分别是模拟接口、后台管理系统、用户前台、API 网关 和第三方调用 SDK。而这五个平台会被拆分成五个项目,并且每个项目还会被拆分成相应的子系 统。具体来说,我们需要开发五个系统:模拟接口系统、后台管理系统、用户前台系统、API 网关 系统和第三方调用 SDK 系统。

六、项目技术选型

前端

  • React 18
  • Ant Design Pro 5.x脚手架
  • Ant Design & Procomponents组件库
  • Umi 4 前端框架
  • OpenAPI 前端代码生成

后端

  • Java Spring Boot
  • MySQL 数据库
  • MyBatis-Plus 及 MyBatuis X 自动生成
  • API签名认证(Http调用)
  • SpringBoot Starter (SDK开发)
  • Dubbo 分布式(RPC、Nacos)
  • Swagger + Knife4j 接口文档生成
  • Spring Cloud Gateway 微服务网关
  • Hutool、Apache Common Utils、Gson 等工具库

七、需求分析

背景:

做一个API接口平台:

  • 管理员需要用到的后台接口
  • 用户可以访问前台,查看接口信息

其他要求:

  • 防止攻击
  • 不能随意调用(限制、开通)
  • 统计调用次数
  • 计费
  • 流量保护
  • API接入

八、前端项目初始化

1、搭建项目脚手架(Ant Design Pro)

1.1、点击开始使用

Ant Design Pro   官方文档

进入Ant  Design Pro网站,点击

1.2、复制初始化命令
 
1.3、在本地打开项目目录

 或者使用PowerShell

1.4、使用初始化命令

1.5、创建项目

使用 pro create cc 创建项目

选择最新版本 umi@4

2、使用前端开发工具

2.1、打开项目

前端使用WebStorm或VSCode

注:使用webstorm,idea就不能用了,可能是激活码问题,我用的是vscode

确认环境是否匹配

输入命令,查询版本

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值