API简介(二)

API简介(一)一文中,介绍了使用API的目的、设计、发行政策以及公共API的含义,本篇主要介绍API的用法,从库和框架、操作系统、远程API、Web API四个方面展开。

库和框架

API通常与软件库有关。当库是这套规则的“实际执行”时,API描述并规定了“预期行为”(一种规范)。

单个API可以采用共享同一编程接口的不同库的形式,具有多种实现方式(或抽象,无)。将API与实现分开,可以允许以一种语言编写的程序使用以另一种语言编写的库。例如,由于Scala和Java编译为兼容的字节码,因此Scala开发人员可以利用任何Java API。

API的使用取决于所涉及的编程语言的类型。诸如Lua之类的过程语言的API可以主要由执行代码,操纵数据或处理错误的基本例程组成,而诸如Java之类的面向对象语言的API则可以提供类及其类方法的规范。

语言绑定也是API。通过将一种语言的特性和功能映射到以另一种语言实现的接口,语言绑定允许在以一种语言进行开发时使用另一种语言编写的库或服务。诸如SWIG和F2PY(一种从Fortran到Python的接口生成器)之类的工具可简化此类接口的创建。

API也可以与软件框架相关:框架可以基于实现了多个API的多个库,但是与正常使用API​​不同,对框架内建行为的访问是通过使用新类扩展其内容,从而实现插入框架本身。

而且,整个控制程序流程可以通过控制反转或类似的机制而不受调用者的控制,从而不受框架的控制。

操作系统

API可以指定应用程序和操作系统之间的接口。 例如,POSIX指定一组通用API,这些API旨在使为POSIX兼容操作系统编写的应用程序能够为另一个POSIX兼容操作系统编译。Linux和Berkeley软件发行版是实现POSIX API的操作系统的示例。Microsoft已显示出对向后兼容API的坚定承诺,尤其是在其Windows API(Win32)库中,因此较旧的应用程序可以在较新版本的Windows上使用称为“兼容模式”的特定于可执行文件的设置。API与应用程序二进制接口(ABI)的不同之处在于,API是基于源代码的,而ABI是基于二进制的。例如,POSIX提供API,而Linux Standard Base提供ABI。

远程API

远程API允许开发人员通过协议(特定于通信的标准)来操纵远程资源,该协议允许不同的技术一起工作,而不论语言或平台如何。例如,Java数据库连接API允许开发人员使用相同的功能集查询许多不同类型的数据库,而Java远程方法调用API,使用Java远程方法协议来允许调用可远程操作但在本地运行的功能开发人员。因此,远程API对于维护面向对象程序设计中的对象抽象很有用。在代理对象上本地执行的方法调用,使用远程协议在远程对象上调用相应的方法,并获取要在本地用作返回值的结果。代理对象的修改也将导致远程对象的相应修改。

Web API

Web API是企业和使用其资产的应用程序之间进行交互的已定义接口,这也是服务水平协议(SLA),用于指定功能提供者并为其API用户公开服务路径或URL。API方法是一种体系结构方法,它围绕为服务于不同类型消费者的不同应用程序提供一组服务程序接口的方法。

当在Web开发的上下文中使用API时,通常将其定义为一组规范,例如超文本传输协议(HTTP)请求消息以及响应消息的结构定义,通常以可扩展标记语言(XML))或JavaScript对象表示法(JSON)格式。例如运输公司的API,可以将其添加到以电子商务为中心的网站上,以方便订购运输服务,并自动包括当前的运输价格,而站点开发人员不必在网络数据库中输入运输者的价格表。尽管“ Web API”在历史上实际上是Web服务的代名词,但最近的趋势(所谓的Web 2.0)已从基于简单对象访问协议(SOAP)的Web服务和面向服务的体系结构(SOA)转向更直接的表示状态转移(REST)样式的Web资源和面向资源的体系结构(ROA)。这种趋势的一部分与语义Web向资源描述框架(RDF)的发展有关,RDF是一种促进基于Web的本体工程技术的概念。Web API允许将多个API组合到称为mashup的新应用程序中。在社交媒体领域,Web API使Web社区可以促进在社区和应用程序之间共享内容和数据。这样,可以将在一个地方动态创建的内容发布并更新到Web上的多个位置。例如,Twitter的REST API允许开发人员访问Twitter的核心数据,而Search API为开发人员提供了与Twitter搜索和趋势数据进行交互的方法。

更多EDI技术交流,欢迎私信或评论!

注:文案部分内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉

API简介(二)的更多相关文章

  1. web API简介(二):客户端储存之document.cookie API

    概述 前篇:web API简介(一):API,Ajax和Fetch 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据.document.cook ...

  2. web API简介(三):客户端储存之Web Storage API

    概述 前篇:web API简介(二):客户端储存之document.cookie API 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据. W ...

  3. Raphael Js矢量库API简介:

    Raphael Js矢量库API简介:Raphael Javascript 是一个 Javascript的矢量库. 2010年6月15日,著名的JavaScript库ExtJS与触摸屏代码库项目jQT ...

  4. Monkey脚本API简介

    一.API简介 LaunchActivity(pkg_name, cl_name):启动应用的Activity.参数:包名和启动的Activity. Tap(x, y, tapDuration): 模 ...

  5. web API简介(四):客户端储存之IndexedDB API

    概述 前篇:web API简介(三):客户端储存之Web Storage API 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据. Index ...

  6. 百度地图API简介

    百度地图API简介 在此申明不是我写的,用的是别人的,仅限自己学习 百度地图移动版API(Android)是一套基于Android设备的应用程序接口,通过该接口,可以轻松的访问百度服务和数据,构建功能 ...

  7. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  8. 如何获取用户的地理位置-浏览器地理位置(Geolocation)API 简介

    如何获取用户的地理位置-浏览器地理位置(Geolocation)API 简介 一.总结 一句话总结:Geolocation API(地理位置应用程序接口)提供了一个可以准确知道浏览器用户当前位置的方法 ...

  9. TFS API:二、TFS 代码查询工作项

    TFS API:二.TFS  代码查询工作项 首先我们需要认识TFS的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection, ...

随机推荐

  1. python算法常用技巧与内置库

    python算法常用技巧与内置库 近些年随着python的越来越火,python也渐渐成为了很多程序员的喜爱.许多程序员已经开始使用python作为第一语言来刷题. 最近我在用python刷题的时候想 ...

  2. go内建方法 append copy delete

    package mainimport "fmt"func main() { testAppend() testCopy() testDelete()}func testAppend ...

  3. IDEA 半天卡住buid(编译)不动

    [号外号外!] 最终解决办法并不复杂,关键在于"遇见问题,怎么样层层分析,多条路径试错,最终解决问题的思路或者能力"--资深码农的核心竞争力之一 背景 今天结束完最近2个月的一个项 ...

  4. 【总结】spring aop

    1.aop简介 AOP的全称是Aspect Oriented Programming,面向切面编程.它的主要思想是在程序正常执行的某一个点切进去加入特定的逻辑.AOP框架中对AOP支持最完整的是Asp ...

  5. 面试时说Redis是单线程的,被喷惨了!

    Redis是单线程的,这话搁以前,是横着走的,谁都知道的真理.现在不一样,Redis 变了.再说这句话,多少得有质疑的语气来跟你辩驳一番.意志不坚定的,可能就缴械投降,顺着别人走了. 到底是什么样的, ...

  6. NB-IoT的NPBCH发送过程

    NB-IoT的NPBCH是使用固定的重复样式发送的.NPBCH的传输时间间隔(Transmiss Time Interval,TTI)是640ms,承载NB-IoT主系统消息块(Narrow-Band ...

  7. 在IIS中部署前后端应用,多么痛的领悟!

    目前手上的Web项目是前后端分离的,所以有时也会倒腾Vue框架. 前后端应用最终以容器形态.在k8s中部署, 为此我搭建了基于Gitlab flow的Devops流程. 在Devops实践中,容器部署 ...

  8. 【持续更新】Tomcat低级错误

    0(模板) 所犯错误: 现象: 报错内容: 1 所犯错误: 声明@Webservlet中未加"/"符号: 现象: 能够Connected to server,但是代码报错,且无法顺 ...

  9. Serilog源码解析——使用方法

    在上两篇文章(链接1和链接2)中,我们通过一个简易 demo 了解到了一个简单的日志记录类库所需要的功能,即一条日志有哪些数据,以及如何通过一次记录的方式将同一条日志消息记录到多个日志媒介中.在本文中 ...

  10. How to using code find the menu label of Menus【X++】

    // VAR Changed by Xie Yu Fan.Fandy 谢宇帆 static void XIE_FindMenu(Args _args) { Dialog dlg = new Dialo ...