个人练手项目(Java)-API开放平台(四)——签名认证与SDK(技术难点)
签名认证为什么要做签名认证? 如果你直接把接口暴露出去,黑客可以通过抓包拿到请求地址,然后用脚本疯狂刷你的接口,导致你的服务器瘫痪,甚至把你的数据库拖垮 防守策略(AK/SK 机制): AK (AccessKey):是公开的,代表“你是谁”。每次请求都要带在请求头(Header)里。 SK (SecretKey):是绝密的,代表“你的密码”。绝对不能放在请求头里在网络上传输! Sign (签名):客户端在发请求前,把请求参数和绝密的 SK 拼接在一起,用 MD5 等算法算出一串“乱码”(这就是签名)。 验证:服务端收到请求后,拿到明文的 AK,去数据库查出对应的 SK。然后服务端用同样的参数和 SK 再算一次签名。如果两次签名一致,说明请求确实是这个用户发出的,且参数没有被篡改。 实现签名生成算法第一步:打造签名生成算法我们先回到 api-platform-common 模块,把这个签名算法写成一个通用的工具类,这样以后不管是客户端发请求,还是服务端做校验,都可以复用。 12345678910111213141516171819202122/** * API签名工具...
个人练手项目(Java)-API开放平台(三)——接口管理(核心业务)
接口管理——实现CRUD第一步:打通底层数据通道 (Mapper & Service)创建 InterfaceInfoMapper.java12345/** * 接口信息表 Mapper 接口 */public interface InterfaceInfoMapper extends BaseMapper<InterfaceInfo> {} 创建 InterfaceInfoService.java1234567/** * 接口信息服务 */public interface InterfaceInfoService extends IService<InterfaceInfo> { // 稍后会在这里定义校验逻辑方法 void validInterfaceInfo(InterfaceInfo interfaceInfo, boolean add);} 第二步:定义交互契约 (DTO)新增和修改的参数是不同的(新增不能传 ID,修改必须传 ID),所以绝对不能混用一个实体类。 新增接口请求体:I...
MyBatis-Plus:入门学习
在 Java 后端开发中,如果你还在为手写单表 CRUD(增删改查)的 SQL 语句而掉头发,那么 MyBatis-Plus(简称 MP)绝对是你必须掌握的效率神器。官方对它的定位是:“只做增强不做改变,为简化开发、提高效率而生”。 这条文章主要是方便自己复习用,如果有错误请在评论区帮我指正,谢谢咯~ 核心原理解析:为什么不用写 SQL?MP 底层并没有脱离 JDBC 和 MyBatis,它只是做了一套非常精妙的**“自动化封装”**。 主要依赖于三个核心技术: 1.继承机制: MP 官方提供了 BaseMapper<T> 和 IService<T> 两个接口。你的类只要继承它们,就等于直接拥有了官方提前写好的几十个标准 CRUD 方法。 2.泛型推导: 接口后面的泛型 <T>(例如 <User>)非常关键。MP 会读取这个实体类的信息。 3.反射与动态 SQL: 当项目启动时,MP 的“SQL 注入器”会利用 Java 反射机制,扫描 <T> 对应的实体类。 通过类名推导出表名(User -> user 表)。...
个人练手项目(Java)-API开放平台(二)——基础与权限
项目开发阶段化我将项目开发划分成了下面四个阶段,从基础准备到核心业务开发再到技术难点攻关 阶段一:基础与权限(当前阶段) 统一返回类与异常处理:填充common模块。 数据模型映射:在 model 模块里,根据 SQL 写出 User、InterfaceInfo 等实体类。 用户模块 (User Service): 实现手机号注册/登录(配合 Redis 存验证码)。 引入 JWT (Token) 鉴权。 实现 AK/SK 的自动生成(注册时分配)。 阶段二:接口管理(核心业务) 接口发布与管理:实现管理员对 API 接口的增删改查(CRUD)。 接口详情页展示:让开发者能在前端看到有哪些 API 可以调。 阶段三:签名认证与 SDK(技术难点) API 签名算法实现:编写核心的校验逻辑。 开发 SDK:写一个可以让别人直接 import 的 jar 包,自动处理签名。 阶段四:网关与中间件(高并发攻坚) Gateway 搭建:实现统一鉴权和路由转发。 Redis 限流:防止接口被刷。 MQ + ES 日志系统:异步收集调用记录并实现报表搜索。 统...
个人练手项目(Java)-API开放平台(一)——项目背景与技术选型
一个java的练手项目,这章主要讲项目背景与技术选型
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment






