产品设计中接口的定义及接口需求文档的编写指南
2024-09-21
1. 什么是接口
接口在百科全书中的定义:API(应用程序编程接口)是一组预定义函数,其目的是为应用程序和开发人员提供访问基于某种软件或硬件的一组例程的能力,而不必访问源代码或了解内部工作机制的细节。
要理解什么是接口,首先要明白为什么我们需要使用接口?
两个独立的系统,拥有独立的数据或者程序,这就使得它们之间无法直接访问对方的数据库或者程序(两个独立的数据相当于两个独立的家庭,每个家庭都不能随意让外人进入,否则将发生盗窃等严重后果)。但是在某些业务场景下,独立的系统必须共享数据或者一套共同的程序逻辑,比如不同业务操作系统在统一的业务流程上,下游系统的业务依赖于上游系统的数据。
既然如此,何不把它们设计成一个系统,这样就不会出现上述的问题了呢?
这是因为有些业务流程非常长且复杂,如果设计成一个系统,整个系统就会变得非常复杂,功能设计、开发和维护都比较困难。所以,虽然有上下游业务关系但边界不明确,一般都会把业务分成独立的系统去实现网站优化,比如采购系统、仓储系统等。另外,很多时候我们需要获取的数据是我们之外的其他公司拥有的,更不可能设计成同一个系统。
基于以上两点:接口是两个独立的系统之间同步数据或者互相访问对方程序的方式。
二、如何设计接口 1、分清楚是主动访问还是被动请求:
a. 如果是主动访问,则分两种情况:
第一,我们是数据的使用者,需要主动从对方获取数据;第二,我们是数据的提供者,需要主动将数据同步给对方。
主动访问的时候,不需要自己创建接口,而是访问对方的接口。需要明确的问题是:在什么节点我们需要访问对方的接口?是在用户触发某个操作的时候实时访问吗?还是说没有实时性要求,只是周期性的访问?
如果我们是数据的使用方,而我们需要的数据对于用户使用某项功能至关重要,那么我们就必须在用户操作的时候实时访问对方的接口,获取数据并展示给用户。一个典型的例子就是我们在网站上注册时获取验证码的功能。
如果我们是数据的使用方,而我们需要的数据是一些和用户实时操作不相关的基础数据,比如客服系统需要从其他业务系统获取用户的基础数据,以便在系统某些功能下展示用户的信息(比如客服在处理客户投诉等问题时,需要知道客户的一些详细信息,而这些信息只有在业务系统中才有)。这种情况下,我们通常会增加一个脚本,定期(比如两小时一次)访问对方的接口获取数据并存入自己的数据库,然后在需要的时候直接从自己的数据库中获取并展示出来。
如果我们是数据提供方,并且我们提供的数据是下游系统要求实时性要求高的数据,我们更多的会使用实时同步;如果是基础数据,我们就会选择周期性同步。
b.如果是被动请求,则分两种情况:
第一,我们是数据提供方,需要对方获取数据;第二,我们是数据使用者,需要对方主动同步数据。
被动请求是需要提供接口给对方访问的,这时候我们就需要搞清楚:对方来访问的时候网站开发,我们需要提供什么参数?根据他提供的参数,我们需要返回什么数据?这些数据从哪里来?
如果有些数据来自本系统,其他系统需要使用这些数据,那么可以提供一个接口,让其他系统通过访问接口来获取这些数据。
如果我们是数据使用方,要求对方主动同步数据,这种场景很典型例如:我们是业务的下游,上游系统生成数据之后,需要将数据同步到下游系统才能让流程继续进行,而流程的时效性要求很高,不能有延迟。这种情况下,只有上游系统知道数据是哪个节点生成的,所以只能等它生成数据后,主动推送给下游系统。下游系统因为无法知道数据生成的时间,所以无法及时获取数据。这时候最好的办法就是让对方主动同步数据。
2.理解数据交互的实时性要求
a.如果我们是数据用户,我们需要根据业务需求来决定数据采集的实时性。
上面提到,如果数据是用户使用功能时需要的,是即时获取的。如果是定期获取基础数据,那么获取周期就根据我们对数据准确度的要求,以及对方数据变化的频率来决定。如果我们对数据的准确度要求不是100%,对方数据变化的频率也不是很高,那么周期可以设计的长一些,比如一天一次,几个小时一次等等。
b. 如果我们是数据提供方,则以对方业务需求为准,但对于需要大量访问才能获取数据等特殊情况,我们应该在需求或评论中予以说明和说明,以帮助开发和设计更符合需求的接口。
3.选择合适的接口方法
考虑到接口类型的不同和实时性的要求,可以选择合适的接口实现方式:
a.mq消息队列
它是一个中间件,数据提供方把数据放到中间件里,数据获取方从中间件获取数据。为了满足向多个系统同步基础数据的需求,消息队列是最合适的方式。
如果选择这种同步方式,需要注意以下几点:增量同步还是全量同步。如果是增量同步网站开发,对方应该增量获取数据还是全量获取数据?如果是全量同步,对方在什么情况下更新数据,什么情况下更新数据?
b. 同步
数据同步方直接访问数据采集方的数据表网站模板,将数据写入对应表,这种方式实时性最高,如果对数据准确性要求很高的话,这种方式是一种很好的数据同步方式。