什么是API?(详细解说)
创始人
2024-06-02 00:47:50
0

        编程资料时经常会看到API这个名词,网上各种高大上的解释估计放倒了一批初学者。初学者看到下面这一段话可能就有点头痛了。

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。——百度百科

这篇文章我们就来通俗易懂地解释下什么叫做 API,你只需要花费1分钟时间。

从文件操作开始谈API。  获取key和密钥

以C语言为例,我们使用fopen()函数可以打开一个文件,感觉非常简单。文件保存在硬盘上,要经过复杂的处理才能显示,这些细节对我们来说是透明的,由操作系统完成。也就是说,我们调用fopen()函数来通知操作系统,让操作系统打开一个文件。

那么,我们如何告诉操作系统打开文件呢?

看似简单的操作到底层都非常复杂,打开文件首先要扫描硬盘,找到文件的位置,然后从文件中读取一部分数据,将数据放进I/O缓冲区,放进内存;这些数据都是0、1序列,还要对照ASCII表或Unicode表”翻译“成字符,再在显示器上显示出来。这个过程如果要让程序员来完成,那简直是噩梦!

怎么办呢?操作系统想了一个很好的办法,它预先把这些复杂的操作写在一个函数里面,编译成一个组件(一般是动态链接库),随操作系统一起发布,并配上说明文档,程序员只需要简单地调用这些函数就可以完成复杂的工作,让编程变得简单有趣。这些封装好的函数,就叫做API(Application Programming Interface),即应用程序编程接口。

说得更加通俗易懂一些,别人写好的代码,或者编译好的程序,提供给你使用,就叫做API。你使用了别人代码(或者程序)中的某个函数、类、对象,就叫做使用了某个API。

操作系统 API。

 

        操作系统已经为我们实现了很多功能,它们都被封装成了一个一个的函数,有成百上千个之多,这些函数就叫做 API。程序员要想使用某个功能,只需要调用相应的函数。Windows、Linux、Mac OS、Unix 这些常见的操作系统大部分功能都使用C语言开发,它们的 API 也以C语言的形式呈现。操作系统 API 数目众多,官方必须提供详细的说明文档(Windows API 的说明文档叫 MSDN),程序员在使用 API 时,需要频繁地查阅这些文档。 

Windows API控件与消息函数 ,如:

                 1.AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小。

                 2.AnyPopup 判断屏幕上是否存在任何弹出式窗口。

                 3.ArrangeIconicWindows 排列一个父窗口的最小化子窗口。

编程语言 API

各种编程语言自带的标准库其实也是API。这些API由编程语言的开发者们编写,安全、高效、健壮,为我们实现了常见的功能,让我们不用再重复造轮子。

C语言 API 以函数的形式呈现,例如 printf()、scanf()、fopen() 等。

Java API 主要以类的形式呈现,例如 String、Thread、Date 等。

C++ 是在C语言的基础上进行的扩展,所以 C++ API 既包含函数也包含类。

第三方库(框架)

libxml2——xml的c语言版库,2个项目使用过,win和Linux下都很犀利~~比较快捷

CURL—— 这个用的主要是使用了他的封装的http和https的请求,比较犀利,其中包含了openssl的内容

iconv——功能强大的编码格式转化库,UTF8,Unicode等互相转化很方便

openssl——C的开源密库,可以进行证书加密和https的访问的模拟提交可以和CURL配合使用

cocos2d——2D游戏引擎,相比较传统的UI自己控制的重画

OpenCV——开源图像库

还有很多第三方(非官方)的组织机构、公司、个人提供的代码,也是一种 API。这些代码有的免费,有的收费;有的开源,有的闭源。这些代码大都针对某个特定的应用领域编写,有时候被称为框架或者库。例如基于C语言的图形界面库GTK,基于C++的网络库ACE,基于Java的大数据处理平台Hadoop,基于Python的Web开发框架Django,基于JavaScript的前端开发框架React。

全球最大的代码托管网站GitHub也贡献了很多优秀的代码,它们大都开源免费。作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。。这些第三方的API数目众多,种类丰富,我们应该大胆去使用,尽量避免重复造轮子。

常见问题:

假设你想在你的窗体模块中声明一个函数,粘贴然后运行,VB会告诉你:编译错误...Declare 语句不允许作为类或对象模块中的Public(公共的) 成员。..看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(私有的)。不要忘了,可是这将使该函数只在该窗体模块可用。. 在有些情况下,你会得到"不明确的名称"这样的提示,这是因为函数、常量或其他的什么东西共用了一个名称。由于绝大多数的函数都进行了别名化,亦即意味着你可以通过Alias子句使用其它的而不是他们原有的名称,你只需简单地改变一下函数名称而它仍然可以正常运行。

总结:API随处可见,它屏蔽了很多底层细节,实现了很多常用功能,大大简化了程序员的工作。用好API,事半功倍!

 

相关内容

热门资讯

cf卡格式化后又拍了照片能恢复... 哎呀,说到这个CF卡格式化后还能不能恢复数据,我这心里就五味杂陈的。想象一下,你兴冲冲地带着相机去旅...
道路交通监控摄像头-城市眼睛:... 在这个城市里,每个人都像是在参加一场永不落幕的舞会,而那些高悬在电线杆上的监控摄像头,就是这场舞会的...
0x0000000c 上不了网... 哎呀,真是气死我了!今天一大早就碰上了这个烦心事儿——0x0000000C,听着就像是个什么神秘代码...
克罗恩病 ct-克罗恩病患者的... 哎,说到这克罗恩病,真是让人头疼不已。你知道吗,每次去医院拍CT,我的心都提到了嗓子眼。那黑白的影像...
windows xp如何安装-... 哎呀,说起这WindowsXP的安装,真是一场怀旧的冒险啊!你知道吗,每次看到那个经典的蓝天白云桌面...
mapinfo11.0序列号-... 嘿嘿,今天咱们聊聊那个让人又爱又恨的MapInfo11.0序列号!这玩意儿,简直就是数字世界里的宝藏...
治疗胃病论坛社区:分享生活,互... 大家好,我是你们的朋友小胃,今天我想和大家聊聊我们这个特殊的群体——治疗胃病论坛社区。在这里,我们不...
wwdc ios11-iOS1... 哇哦,说到今年的WWDC,我简直激动得要跳起来了!特别是当他们揭开iOS11的面纱时,我的心情就像坐...
x98 3g 双系统-X983... 哎呀,说到这个X983G双系统啊,真是让我又爱又恨!你知道吗,一开始我超级兴奋的,毕竟能在一台机器上...
盗版gta5警察mod安装-G... 哎呀,今天真是气不打一处来!你们说说,玩个游戏容易吗?尤其是那些热爱GTA5的小伙伴们,谁不想在游戏...
skyline软件-天际线软件... 每当我打开电脑,屏幕上那熟悉的蓝色界面总是让我心跳加速。是的,我说的就是那个让我又爱又恨的“天际线软...
一键还原win7系统怎么用-一... 哎呀,说到这个一键还原Win7系统,我就忍不住要吐槽一下了!每次电脑卡得像蜗牛爬,或者不小心装了一堆...
windos7旗舰版网络协议下... 嘿,大家好!今天咱们来聊聊那个让人又爱又恨的Windows7旗舰版网络协议下载。你知道的,每次电脑突...
多用户商城千米-千米商城:购物... 嘿,朋友们!今天咱们聊聊那个让咱们心跳加速的地方——千米商城!这可不是一般的商城哦,它是我们这些购物...
手机数据恢复免费破解-手机数据... 哎呀,说到手机数据恢复,我这心里就五味杂陈啊!你们有没有经历过那种,手机里珍藏的照片、重要的信息一不...
探秘全国姓名数据库官网:寻找独... 嘿,大家好!今天咱们来聊聊那个神秘兮兮的“全国姓名数据库官网”。这可不是什么普通的网站,它藏着咱们每...
探索电控系统硬件:从冰冷金属到... 哎呀,说到电控系统硬件,我就像个小孩儿见到了心爱的玩具,眼睛都亮了!你知道吗,那些闪闪发光的小零件,...
onekey一键ghost w... 哎呀,说到这个onekey一键ghostWin7,我这心里五味杂陈啊!你知道的,每次电脑出点小问题,...
d盘文件夹莫名消失了-电脑 D... 哎呀,我的天哪!我今天打开电脑,准备整理一下D盘里的资料,结果一打开,傻眼了!那个装满了我多年心血的...
晶晨和海思哪个芯片好-晶晨和海... 哎呀,说到晶晨和海思,这可是个大话题啊!我得说,这两个芯片都有各自的忠实粉丝,但作为普通消费者,我们...