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. 0基础如何更快速入门Linux系统?学完Linux有哪些就业方向?

    Linux系统是使用Linux内核及开源自由软件组成的一套操作系统,是一种类UNIX系统,其内核在1991年10月5日由林纳斯·托瓦兹首次发布. 它的主要特性:Linux文件一切皆文件.完全开源免费. ...

  2. .net 连接数据库实例

    web.config配置 <appSettings> <add key="ConnectionString" value="server=.;datab ...

  3. Business Partner - 供应商与客户的集成 - S/4HANA(1)

    本文基于S/4HANA 1511版本,同时大部分内容适用于S/4HANA i.e1610/1709/1809. 本文旨在为全新实施的BP配置,或从ECC到S/4HANA的供应商客户主数据迁移提供信息支 ...

  4. 解决加密PDF文档无法复制文字的问题

    有的时候在网络上搜索到一篇心仪的PDF文档,想复制其中内容时提示无法复制. 如果只想摘抄其中部分文字内容,可以使用Firefox浏览器打开这篇加密文档. Firefox浏览器自带PDF插件,打开后即可 ...

  5. 【CF1436B】Prime Square 题解

    原题链接 题意简介 要求构造一个由不大于 1e5 的非负数构成的正方形矩阵,矩阵的每个元素不是质数,但每一行.每一列的数字的和都是质数. 思路分析 看到样例二,我们知道数字可以重复. 于是,我们很容易 ...

  6. docker-compose启动consul集群

    version: '2.0' services: consul-server1: image: consul:latest hostname: "consul-server1" p ...

  7. Ignite、Vertx

    Ignite IpFinder 默认采用multicast的ip发现方式 优点: 集群较小时,配置方便 缺点 集群较大100s-1000s时,广播非常耗时,此时建议使用ZooKeeper发现机制(Zo ...

  8. vue 路由知识点(一级路由与二级路由嵌套)

    本人小白一个,如果问题,麻烦大神指点, 一级路由: path:'/' 默认为显示; 二级路由: path: '',默认显示为index组件,因为二级路有没有写index组件,所以使用redirect: ...

  9. SWPUCTF_2019_p1KkHeap

    SWPUCTF_2019_p1KkHeap 环境:ubuntu18 考点:UAF,沙箱逃逸 ubuntu18现在不能构造double free了!!! 所以我用patchelf来做 IDA逆一下 可以 ...

  10. vue组件使用name属性来生成递归组件

    先来个简单的数据 1 lists = [{ 2 id: 1, 3 title: '第一层', 4 children: [{ 5 id: 3, 6 title: '第二层', 7 children: [ ...