前面聊了聊如何做基础框架设计。

接下来看看如何做API设计,先来看看API是什么、有什么和能干什么;然后来聊聊如何做API设计;最后再看看API设计的一些经验。

一:API的基本认识

1:API是什么

API是应用程序接口(Application Programming Interface的简写)

在Java里面,API不仅仅是interface,也包括对外提供的类、属性和方法,还有相应的doc、配置、脚本等等。

广义的说,对于一个封装体而言,不管是组件、模块、子系统,只要是对外提供的,都算是API。

架构师有前途吗_架构师累不累_架构师是做什么的

2:API有什么

(1)根据使用者的不同,分为API和SPI(Service Provider Interface服务商提供接口)

(2)根据使用目的不同,分为对内接口、对外接口(交互接口、OpenAPI)

(3)根据API的用途不同,或者是提供API的场景不同,分为:通用API、框架级API、应用相关的API

3:API用来干什么

简单总结了一下,API至少有如下一些用途:

(1)做为系统提供功能的对内或对外的契约

这对于团队内部,或者是团队之间的协作,是非常有用的。通常在分开做具体实现之前,会一起把这些需要交互的接口制定出来,作为实现方和调用方都要遵守的契约。

(2)封装系统,程序模块化,使得更好进行依赖的选择

从外部来看一个封装体的话,应该只能看到开放给它的API,不应该看到,也不需要了解内部的具体实现细节。这也是API一个非常重要的作用。

(3)分离使用者和具体实现

(4)面向抽象编程

做Java开发的,估计刚开始学,就老听见一句话,要面向抽象编程,一个具体的体现方式就是API。

(5)提高系统的可维护性、可扩展性

只要接口不变,功能不变,内部具体实现变化,是不会影响外部程序的,也就是可维护,同理,还可以提供多种实现,根据一定条件进行选择,从而扩展原有的功能。

架构师累不累_架构师是做什么的_架构师有前途吗

二:API设计的基本步骤

1:用例驱动的API设计

简单点说,就是按照业务功能需要,来进行初步的API设计。

从代码层面,API设计就是做方法定义,取一个望文知意的好名称,定义好参数列表和返回值,再考虑是否有例外抛出,貌似就定义好一个API方法了。

这也要求前面的需求分析做的比较好,功能梳理全面、准确、细致,这里就可以对照着功能点列表,快速的设计出初步的API来。反过来说,如果需求分析做的不好,那这里基本就是瞎做了。

2:对初步设计的API进行综合权衡和调整

具体分析前面初步设计的API,可能有如下一些情况:

(1) 如果有多个类似功能的方法,是否可以合并

(2) 如果这个API提供的功能范围比较大,是不是要进一步拆分

比如向外提供了一个按条件查询的方法,封装条件的也是一个数据Model,这种功能范围就比较大,要结合具体使用情况来分析,是否进一步拆分成多个范围小一点的API

(3) 这个方法功能放到当前的API接口里面,是否合适,是否需要对每个API封装的功能体的范围进行一定的调整,使得封装体功能更内聚,颗粒程度更合适

(4) 这个方法本身提供的是细粒度的功能还是粗粒度的功能,是否需要把相关的业务功能组合起来,向外提供粗粒度的API方法

(5) 还要进一步考虑参数列表,传递的数据是否有必要,是传多了还是少了。一般而言,能不让外部传的数据,就尽量不要让外部传,这样可以提供API的易用性

(6) 进一步考虑返回的数据,是多了还是少了,是否能满足使用这个API方法的地方的需要

还有很多需要仔细考虑的地方,比如:易用性、安全性、可扩展性、性能、可维护性 等等很多方面,设计精良的API,也不是那么容易的,内容太多,这里就先不去提这些了。

3:按照业务场景进行API功能走查

这是做架构设计很好的一种方法,通过模拟实际的业务运行场景,来判断API设计是否足够,有没有遗漏,设计是否合理,模拟走查的业务是否运转良好等等的。

4:逐步改善,最推荐增量改进的方式;尤其是在详设的时候,对API进行完善

做设计都是从外到内,由粗到精,逐步细化的,做API设计也一样。

尤其在详细设计的时候架构师是做什么的,因为做详设的时候,会更多考虑功能如何实现,那么反过来再审视前面设计的API,比如参数是否合适,返回值是否能得到,这个功能粒度是否合适,等等的,从而进一步完善API。

关于如何做API设计,先就简单的聊到这里。

特别推荐,挺不错的,推荐大家去看看:

在线IDE+本地部署 AI 编码助手Tabby 初探

是CSDN上的博文,地址:

当然,如果你觉得本系列文章还不错,能够给你一些启发和思考的话架构师是做什么的,请关注、点赞、收藏加转发,让更多的朋友加入到我们的行列,谢谢啦!

更多架构师之路干货文章,已在路上,稍后就到!

为了大家更好的交流架构设计的思想和知识,大家可以加微信sishuok,拉你进架构设计学习群,一起共同学习,共同进步。

PS:学习群里面,我们会不定期发放一些免费的学习资源,比如:

《深入理解分层架构模式》

《B2B电商中,客户价格模块的架构设计》

《跟Kafa、Redis、ES学持久化设计》

《商品云的架构设计》等等……..

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: Lgxmw666