API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
1.API对于开放平台的意义
基于互联网的应用正变得越来越普及,在这个过程中,有更多的站点将自身的资源开放给开发者来调用。对外提供的API 调用使得站点之间的内容关联性更强,同时这些开放的平台也为用户、开发者和中小网站带来了更大的价值。
开放是目前的发展趋势,越来越多的产品走向开放。目前的网站不能靠限制用户离开来留住用户,开放的架构反而更增加了用户的粘性。在Web 2.0的浪潮到来之前,开放的API 甚至源代码主要体现在桌面应用上,而现在越来越多的Web应用面向开发者开放了API。
具备分享、标准、去中心化、开放、模块化的Web 2.0站点,在为使用者带来价值的同时,更希望通过开放的API 来让站点提供的服务拥有更大的用户群和服务访问数量。
站点在推出基于开放API 标准的产品和服务后,无需花费力气做大量的市场推广,只要提供的服务或应用出色易用,其他站点就会主动将开放API 提供的服务整合到自己的应用之中。同时,这种整合API 带来的服务应用,也会激发更多富有创意的应用产生。
为了对外提供统一的API 接口,需要对开发者开放资源调用API 的站点提供开放统一的API接口环境,来帮助使用者访问站点的功能和资源。
当然,开放API 的站点为第三方的开发者提供良好的社区支持也是很有意义的,这有助于吸引更多的技术人员参与到开放的开发平台中,并开发出更为有趣的第三方应用。
视频云技术提供商CC视频开放API接口,用户可以在自己的网站后台轻松完成视频的上传、视频播放控制操作,并可批量获取视频及平台信息。
2.详解API
从文件操作开始谈API。

以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 时,需要频繁地查阅这些文档。

编程语言 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数目众多,种类丰富,我们应该大胆去使用,尽量避免重复造轮子。

API(应用程序编程接口)相关推荐

  1. API(Application Programming Interface,应用程序编程接口)

    API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码 ...

  2. ABI 与 API 的区别(应用程序二进制接口、应用程序编程接口)

    文章目录 1.ABI 简介 2.API 简介 3.ABI 与 API 的区别 1.ABI 简介 C++ 可执行文件是由编译器将源代码编译成目标文件后链接生成的,那么如果目标文件由不同的编译器编译生成, ...

  3. java api接口报500_应用程序编程接口API,我们来聊一聊这个熟悉的名词

    API,全称叫做Application Programming interface,也就是应用程序接口,API是一些预先定义的函数,我是学Java的,当我要使用这些函数的时候,便可以直接调用Java ...

  4. [转载]Z-stack 应用程序编程接口(API)-网络层

    原文地址:Z-stack 应用程序编程接口(API)-网络层作者:vexation NWK  层为更高层提供了如下功能:· ·  网络管理 ·  地址管理 ·  网络参数与功能函数 除了管理功能,NW ...

  5. 学习QGIS Python API(应用程序编程接口)

    目录 前言 说明 API (Application Programming Interface) 摘要 关于QGIS Python API 解密C ++文档 组织QGIS Python库 qgis.c ...

  6. Chapter 20-APIs(应用程序编程接口)

    1.应用程序编程接口 Application Programming Interface API是一些函数.协议.对象的程序集合,程序员可以用来做开发(如JQuery API用来创建网页)或者同外部系 ...

  7. 应用程序编程接口大全_应用程序编程接口101

    应用程序编程接口大全 Do apps like Uber, Pokémon Go and Zomato build their own maps to show where available car ...

  8. FTK应用程序编程接口(API)手册-1

    框架函数 框架函数支撑FTK的主体,它负责初始化应用程序,启动主循环和退出主循环.它对任何一个FTK应用程序都是不可缺少的,即使应用程序没有使用任何控件(当然这也没有什么意义),所以我们先介绍这些函数 ...

  9. FTK应用程序编程接口(API)手册-2

    全局对象存取函数 FTK中有一些单实例的对象,这些对象是以全局变量的形式存在的,为了有效的控制对这些对象的访问,我们提供了相应的存/取函数.这些对象都是在FTK初始化时创建的,所以开发人员无需要再调用 ...

  10. 安卓操作系统版本(Version)与应用程序编程接口等级(Application Programming Interface Level)对照表...

    Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑. 使用Android API,可以在Java环境开发App,编译.打包后可在Android系统 ...

最新文章

  1. layUI 学习记录
  2. 数据结构:插入排序(Insertion sort)
  3. android 手机图库获取sd卡图片,关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结...
  4. 计算机课听课评议,听课优缺点评语
  5. 关于Oracle数据库中行迁移/行链接的问题(一)
  6. 【转】滚动条消息(WM_VSCROLL和WM_HSCROLL)
  7. 科研分享|一个论文关系网络可视化网站
  8. linux中的定时器检测按键,STM32单片机利用定时器实现按键采集
  9. error C2360: 参数初始化操作由“case”标签跳过
  10. android studio : Could not find org.jetbrains.kotlin:kotlin-stdlib-jre7:1.5.31
  11. Setup Factory 点击uninstall.exe Invalid start mode : archive filename
  12. 如何让excel表格排头一直都在_如何快速整理Excel表格?学会这一招整理表格无压力...
  13. 深度解析大快DKadoop大数据运维管理平台功能
  14. 人工智能已经沦为刷榜,刷论文的时代了? 新一代人工智能,认知智能已经来临。道翰天琼。
  15. Zend Studio 10.6.0正式版注册破解
  16. 报错笔记-[error] 1615#0: *14 open() “/usr/local/nginx/html/course/zk.jpg“ failed (2: No such file or dir
  17. 暑期实训心得及总结_史国旭
  18. 路径和(cdq分治)
  19. 学员感言html效果图,学员感言:陪伴,是最长情的告白
  20. mysql如何链表查询_mysql怎样两表查询?

热门文章

  1. 24岁女孩与30岁男人的精彩对白
  2. DevExpress LookUpEdit 初始化(数据加载) 底层类
  3. 关注电子商务网站开发-《网站中常用的Jquery插件》
  4. CLP 中关闭自动落实的问题
  5. ASP.NET留言板 文字加表情
  6. 复习:关于类的继承和构造函数
  7. Jupyter Notebook界面也可以如此炫酷?有人把Notebook玩出了新花样
  8. 阿里、美团、滴滴产品经理共述:产品经理的“乐”与“伤”
  9. 骚操作!使用家里的服务器也能像用云服务器一样方便!
  10. 一款脑洞大开的表格可视化神器