![API安全技术与实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/693/39130693/b_39130693.jpg)
1.1 什么是API
关于API的含义,先来看看维基百科上对API的描述。
![](https://epubservercos.yuewen.com/A22DB8/20516007608116006/epubprivate/OEBPS/Images/17_01.jpg?sign=1738848301-EjrPVDD61k3S87DRCNsMKpQIYnjUvlAc-0-d79fdd6d9979914618aca9ca19dfd086)
从这段描述可以了解到,API是Application Programming Interface的简写,又称为应用程序编程接口,它通过定义一组函数、协议、数据结构,来明确应用程序中各个组件之间的通信与数据交互方式,将Web应用、操作系统、数据库以及计算机硬件或软件的能力以接口的形式,提供给外部系统使用。这样的描述可能过于抽象,以实物类比可能更易于读者理解API的含义。比如在房屋装修的过程中,为了用电方便,通常会预留出插座的位置,为外接设备提供电源,但每一个设备的电源接入方式各不相同,为了统一不同的接入方式,插座通常使用三孔插座或两孔插座,当设备接入供电时,也同样使用三孔插头或两孔插头与之对接。对应到软件中,对外统一提供的三孔或两孔插座,即是这里讨论的API,而到底三孔还是两孔,就是API协议定义的内容。
在API的发展历程中,根据其表现形式的不同,大致分为如下4种类型。
1.类库型API
类库型API通常是一个类库,它的使用依赖于特定的编程语言,开发者通过接口调用,访问API的内置行为,从而处理所需要的信息。例如,应用程序调用微软基础类库(MFC),如图1-1所示。
![](https://epubservercos.yuewen.com/A22DB8/20516007608116006/epubprivate/OEBPS/Images/18_01.jpg?sign=1738848301-N43xGKkovvPxGLe5shuScbyZKSpD6hs8-0-c53265d4f29fffd9b6ce648b6e339db0)
●图1-1 应用程序调用微软基础类库(MFC)
2.操作系统型API
操作系统型API通常是操作系统层对外部提供的接口,开发者通过接口调用,完成对操作系统行为的操作。例如,应用程序调用Windows API或Linux标准库,如图1-2所示。
![](https://epubservercos.yuewen.com/A22DB8/20516007608116006/epubprivate/OEBPS/Images/18_02.jpg?sign=1738848301-ZwUOIN6p2yRsrmdxMD98Ct0edphwYelO-0-9f3e60fdb349df446d552644d59475e1)
●图1-2 应用程序调用Windows API或Linux标准库
3.远程应用型API
远程应用型API是开发者通过标准协议的方式,将不同的技术结合在一起,不用关心所涉及的编程语言或平台,来操纵远程资源。例如,Java通过JDBC连接操作不同类型的数据库,如图1-3所示。
![](https://epubservercos.yuewen.com/A22DB8/20516007608116006/epubprivate/OEBPS/Images/18_03.jpg?sign=1738848301-2aIHmSKdymOBRuCfnnPsWmTlw9QPKUHK-0-b686b75e31073aef5debc63a20e1e58f)
●图1-3 Java通过JDBC连接操作不同类型的数据库
4.Web应用型API
Web应用型API通常使用HTTP协议,在企业与企业、企业内部不同的应用程序之间,通过Web开发过程中架构设计的方法,以一组服务的形式对外提供调用接口,以满足不同类型、不同服务消费者的需求。例如,社交应用新浪微博的用户登录,如图1-4所示。
![](https://epubservercos.yuewen.com/A22DB8/20516007608116006/epubprivate/OEBPS/Images/18_04.jpg?sign=1738848301-KLlCLtN75emvAILStxw0n2pS8FRzTAcM-0-85921891bfdbe18e4d5e4595c5d1000a)
●图1-4 社交应用新浪微博的用户登录
从上述介绍的4种API类型可以看出,API并非新生事物,很早就存在着,只是随着技术的发展,这个专有名词的含义已经从当初单一的类库型API或操作系统型API扩展到如今的Web应用型API接口,这是商业发展和业务多样化驱动技术不断改进的必然结果。同时,API的存在对业务的意义也已经从单纯的应用程序接口所定义的用于构建和集成应用程序软件的一组定义和协议,变成了业务交互所在的双方之间的技术约定。使用API技术的业务双方,其产品或服务与另一方产品和服务在通信过程中,不必知道对方是如何实现的。就像在生活中需要使用电,只要按照要求接上电源就会有电流,而不必知道电流的产生原理自己来发电。不同的行业应用可以独立去构建自己的API能力再对外部提供服务,这样做的好处是大大地节约了社会化服务能力的成本,简化了应用程序开发的难度,节省了时间,为业务能力的快速迭代提供了可操作的机会。