如何开发SDK项目,详细带领理解实践

❤ 作者主页:李奕赫揍小邰的博客
❀ 个人介绍:大家好,我是李奕赫!( ̄▽ ̄)~*
🍊 记得点赞、收藏、评论⭐️⭐️⭐️
📣 认真学习!!!🎉🎉

文章目录

  • SDK-Starter 讲解
  • Starter 开发流程
    • 1.首先新建一个项目
    • 2.创建springboot项目
    • 3.修改maven地址,改成自己的
    • 4.修改pom.xml
    • 5.修改主类
    • 6.添加其他需要引用的类
    • 7.测试打包
    • 8.在其他项目中引入sdk依赖
  • Starter 总结

 
  在上一篇文章中,我们提到作为开发者,每次调用接口都需要处理这一堆繁琐的事情,比如鉴权需要自己生成时间戳,自己写加密算法,生成随机数等等,这些每个开发者写一个接口就要写一遍,这样会相当繁琐,同时开发者自己写加密算法可能还不一样,因此,需要开发一个简单易用的 SDK,使开发者只需关注调用哪些接口、传递哪些参数,就像调用自己编写的代码一样简单
  现在的问题是如何开发这样一个 SDK,其实很简单。这里为了让开发者更方便使用 SDK,我们给它提供一个 starter。就跟我们使用springboot-start一样。
在这里插入图片描述

SDK-Starter 讲解

  开发 starter 的好处:开发者引入之后,可以直接在 application.yml 中写配置,自动创建客户端。
  使用 starter 之后,比如,对于 Redis 的 starter,我们可以直接在 application.yml 配置文件中进行相关配置。我们可以在配置文件中简单地定义一个连接到 Redis 的配置块,或者对于 Swagger 接口文档,我们也可以在配置文件中进行相应的配置。这样做的好处是,我们无需手动编写繁琐的配置代码或者创建客户端实例。通过引入适当的 starter,我们就可以直接使用它们提供的代码和客户端。只需在配置文件中进行简单的配置,整个过程就自动完成了。
  这正是 starter 的作用所在。使用 starter 的好处就是,开发者引入后可以直接在 application.yml 中进行配置,自动创建相应的客户端。这样使得开发过程更加简单便捷,无需过多关注底层实现细节,而是专注于配置和使用。所以接下来就带大家来做这件事情,让我们编写的 starter 能够为开发者写配置时提供提示,并自动创建客户端(如下图所示的提示)。
在这里插入图片描述

 

Starter 开发流程

1.首先新建一个项目

在这里插入图片描述

 

2.创建springboot项目

在这里插入图片描述
然后选择依赖:Lombok、Spring Configuration Processor 后,点击Finish。
 

3.修改maven地址,改成自己的

在这里插入图片描述
 

4.修改pom.xml

首先来看这个项目的依赖,查看 pom.xml;
既然写 SDK,肯定是有版本号的。
在这里插入图片描述
0.0.1,0.0.2都可以

往下看,下面这个东西要删掉,不然会报错(一定要删掉);
这个是 maven 构建项目的方式,我们现在是要构建依赖包,而不是直接运行 jar 包的项目。
在这里插入图片描述
 

5.修改主类

  在创建完这个项目之后,默认会生成一个 Spring Boot 的主类JjlApiSdkApplication。然而,我们并不打算运行一个 Web 项目,而是提供一个现成的客户端对象给用户使用。
  现在我们的目标是为用户生成一个可用的客户端对象。刚才我们是如何生成的呢?我们手动创建了一个新的对象实例。而现在,我们希望用户能够通过引入 starter 的方式直接使用客户端,而不需要手动创建,所以我们需要编写一个配置类。
  删掉主类,创建配置类JjlApiClientConfig.java。
在这里插入图片描述
 

6.添加其他需要引用的类

  在上一篇就曾说过,调用接口时需要进行鉴权,通过Api签名认证进行校验,因此需要开发者多次自己写加密算法,生成时间戳等等。然后我们现在可以将生成加密算法写到sdk中。开发人员直接引入依赖直接调用即可。因此导入相关的类和依赖即可。
在这里插入图片描述
加密算法和调用接口的方法,都可以直接写在这里
在这里插入图片描述

 

7.测试打包

  点击右侧菜单栏中的 maven。点击 Lifecycle → install,把它安装为本地的依赖。
在这里插入图片描述
  需要将测试中的主类删除掉,我们之前把主类删掉了,所以它执行不了了,会报错。
在这里插入图片描述
 

8.在其他项目中引入sdk依赖

  依赖包打完在哪里,你设置的 maven 仓库在哪里,包就在哪里。找到依赖仓库,就在groupId这个包里面。
在这里插入图片描述
 
  如果你想给别人使用的话,要去 maven 仓库官网注册一个账号,然后上传上去。
 
然后去引入我们写好的依赖到其他需要的项目之中。
在这里插入图片描述
点击 application.yml 进行配置,依次输入 yuapi,弹出提示,它现在识别出来了我们另外一个项目中写的配置。
在这里插入图片描述

在项目中可以直接引用sdk中的类。直接进行使用,不用再多次编写加密算法之类的。让开发者专注于接口的开发。
在这里插入图片描述
之后就可以启动项目了进行测试。
 

Starter 总结

  Starter 开发,其实并不难,关键步骤只有几个。开发完后,无论是我的任何一个项目,只要引入这个包,也就是这个 starter,只需要引入这个SDK即可,直接就可以使用。
  如果大家之前有开发过项目,写过一些工具类,都可以尝试将其转化为 starter。可以将其发布到 maven 仓库中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/454592.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从汇编来角度剖析C语言函数调用过程

目录 1.引言 2.寄存器 3.栈帧 4.函数调用前调用者的动作 5.被调用者在函数调用后的动作 6.被调用者返回前的动作 7.调用者在返回后的动作 8.总结 1.引言 当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些细节跟操作…

学习c语言:单链表的应用

一、单链表经典算法 1.1 单链表相关经典算法OJ题1:移除链表元素 . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.…

代码随想录算法训练营Day45 ||leetCode 70. 爬楼梯 (进阶)|| 322. 零钱兑换 || 279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 本质上和leetcode377一样 #include <iostream> #include <vector> using namespace std; int main() {int n, m;while (cin >> n >> m) {vector<int> dp(n 1, 0);dp[0] 1;for (int i 1; i < n; i…

图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制

LDBC&#xff08;Linked Data Benchmark Council&#xff09;Social Network Benchmark&#xff0c;简称 LDBC SNB&#xff0c;是一种针对社交网络场景的评估图数据库性能的基准测试。 LDBC 简介 除了 Social Network Benchmark&#xff0c;LDBC 旗下目前还有其他几种基准测试…

隧道技术和代理技术(三)

隧道技术 知识点 -隧道技术&#xff1a;解决不出网协议上线的问题&#xff08;利用出网协议进行封装出网&#xff09; -代理技术&#xff1a;解决网络通讯不通的问题&#xff08;利用跳板机建立节点后续操作&#xff09; 内环境示意图&#xff0c;方便理解 思路&#xff1a;…

C语言例2-3:从键盘输入一个正整数(位数小于或等于10),判断其是否是回文数

回文数是将自然数n的各位数字反向排列得到自然数n1&#xff0c;若n1与n相等&#xff0c;则称为回文数&#xff0c;例如12321 //从键盘输入一个正整数&#xff08;位数小于或等于10&#xff09;&#xff0c;判断其是否是回文数 //回文数是将自然数n的各位数字反向排列得到自然数…

企业信息化转型之企业统一门户搭建

一、当前企业门户实施的背景和痛点 企业随着公司业务的发展&#xff0c;公司运作的复杂度在不断加大&#xff0c;各部门的业务量和业务的复杂度都在不断增加&#xff0c;已经建设了ERP、HR、OA、考勤、合同、BPM、PLM等有效地支撑了过去和现有业务的发展。 企业在信息化办公是…

一款强大的逆向分析工具,开源!

工具介绍 Ghidra 是由美国国家安全局&#xff08;NSA&#xff09;研究部门开发的软件逆向工程&#xff08;SRE&#xff09;套件&#xff0c;用于支持网络安全任务。包括一套功能齐全的高端软件分析工具&#xff0c;使用户能够在各种平台(Windows、Mac OS和Linux)分析编译后的代…

【零基础学习04】嵌入式linux驱动中信号量功能基本实现

大家好,为了进一步提升大家对实验的认识程度,每个控制实验将加入详细控制思路与流程,欢迎交流学习。 今天给大家分享一下,linux系统里面信号量操作的具体实现,操作硬件为I.MX6ULL开发板。 第一:信号量基本简介 信号量是同步的一种方式,linux内核也提供了信号量…

WebStorm报错

报错情况&#xff1a; npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: element-plus1.0.2-beta.40 npm ERR! Found: vue3.0.5 npm ERR! node_modules/vue npm ERR! peer vue"^3.0.0" from tinymce/tinymce-vue4…

课堂行为动作识别数据集

一共8884张图片 xml .txt格式都有 Yolo可直接训练 已跑通 动作类别一共8类。 全部为教室监控真实照片&#xff0c;没有网络爬虫滥竽充数的图片&#xff0c;可直接用来训练。以上图片均一一手工标注&#xff0c;标签格式为VOC格式。适用于YOLO算法、SSD算法等各种目标检测算法…

idea创建git仓库

选择根目录&#xff1a; 点ok&#xff0c;就创建好了 推送到本地仓库&#xff1a; push到github&#xff1a;

LJXpaper

表1-3引用出现较滞后 1.3文献[42]有问题 如图 如图 如图 如图 &#x1f447; &#x1f447; &#x1f447; &#x1f447; &#x1f447; &#x1f447; &#x1f447; 要不要加连接词&#xff1a;4-11 4-12之间 &#…

pycharm配置解释器

pycharm配置解释器 1.mac配置解释器 1.mac配置解释器

打卡学习kubernetes——了解k8s基本概念

目录 1 Container 2 Pod 3 Node 4 Namespace 5 Service 6 Label 7 Annotations 8 Volume 1 Container Container(容器)是一种便携式、轻量级的操作系统级虚拟化技术。它使用namespace隔离不同的软件运行环境&#xff0c;并通过镜像自包含软件的运行环境&#xff0c;从而…

K8s-CRD实战

CRD CRD的全称是CustomResourceDefinition,是Kubernetes为提高可扩展性, 让开发者去自定义资源&#xff08;如Deployment&#xff0c;StatefulSet等&#xff09;的一种方法. Controller controller是由controller-manager进行管理&#xff0c;通过API Server提供的接口实时监…

掌控无显示器Linux开发板:VNC远程桌面接入指南

掌控无显示器Linux开发板&#xff1a;VNC远程桌面接入指南 Linux开发板是许多技术人员常用的工具&#xff0c;但有时它们并不配备显示器。这时&#xff0c;VNC&#xff08;Virtual Network Console&#xff09;软件就成为了一个非常有用的工具&#xff0c;它允许用户通过网络远…

yarn工作机制

YARN架构组成 YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成 yarn的工作机制&#xff1a;这个把applicationMaster看成一种特殊task比较好理解 ,这个task负责一个job数据的切分&#xff0c;任务切分&#xff0c;任务资源申请&#xff0c;监…

【Web】浅聊XStream反序列化本源之恶意动态代理注入

目录 简介 原理 复现 具体分析之前 我们反序列化了个什么&#xff1f; XStream反序列化的朴素通识 具体分析 第一步&#xff1a;unmarshal解组 第二步&#xff1a;readClassType获取动态代理类的Class对象 第三步&#xff1a;调用convertAnother对动态代理类进行实例…

Linux系统目录结构详细介绍

目录 一、根目录&#xff08;/&#xff09; 二、/bin 三、/boot 四、/dev 1.设备文件类型&#xff1a; 2.常见设备文件&#xff1a; 五、/etc 六、/home 七、/root 八、/run 九、/sbin 十、 /tmp 十一、/usr 十二、/var Linux系统目录结构是一种层次化的文件系…