API向开发人员隐藏了复杂性,将系统扩展到合作伙伴,组织代码并使组件可重用 。
API代表应用程序编程接口,这个概念适用于任何地方,从命令行工具到企业Java代码,再到Ruby on Rails Web应用程序 。API是一种以编程方式与单个软件组件或资源进行交互的方式 。
除非您从头开始编写每一行代码,否则您将与外部软件组件交互,每个组件都有自己的API 。即使你完全从零开始写东西,设计良好的软件应用程序将有内部API来帮助组织代码,使组件更可重用 。还有许多公共API允许您通过网络利用其他地方开发的功能 。
什么是API?API被定义为可以与软件组件交互的规范 。这到底是什么意思?好吧,想象一下汽车是一个软件组件 。它的API将包括它能做什么的信息——加速、刹车、打开收音机等等 。它还包括如何让它做这些事情的信息 。例如,为了加速,你把你的脚放在油门踏板上并推动 。
API不用解释你踩油门的时候发动机内部发生了什么 。这就是为什么,如果你学开内燃机车,不用学一整套新的技能也能开电动车 。API定义中的内容和模式信息结合在一起,定义是抽象的,与汽车本身是分离的 。
需要记住的一点是,一些API的名字通常用来指代交互规范和与你交互的实际软件组件 。例如,短语“Twitter API”不仅指一组以编程方式与Twitter交互的规则,而且通常被理解为指您与之交互的东西,例如“我们正在分析从中获得的推文”Twitter API 。"
作为抽象层的API说到软件,API几乎无处不在 。它与API计算机科学中的一个最基本的概念密切相关:抽象 。这只是一种将组织系统的复杂性抽象化的方式,以便用简单的方式处理复杂的操作 。把这种抽象想象成那些淘宝Dash按钮,电池供电的按钮电路板,你可以用它从淘宝上订购订书钉 。这是它们的样子:
你从淘宝上订购了一个Dash按钮,并使用智能手机上的应用程序将其与你的Wi-Fi网络、你的淘宝账户和产品(如你最喜欢的纸巾品牌)相关联 。然后,无论何时你想订购更多的纸巾,只要按一下按钮就行了 。Dash Button连接到互联网,并发送消息在您的帐户中下单 。再过几天,纸巾就会送货上门 。
和API一样,Dash Button是一个非常简单的接口,它的背后隐藏着各种复杂 。您订购的产品的ID必须从数据库中检索 。您的送货地址必须从您的帐户中撤销 。你必须确定你的纸巾最近存放在哪个运营中心,然后通知你从可用库存中取出货物并打包 。最后,包裹必须与其他包裹一起通过飞机、卡车和货车的某种组合,以确保所有包裹都能有效到达目的地 。
现在想象一下,作为客户,你必须协调所有这些事情 。你永远不会点纸巾,因为太复杂太费时间,你有更好的事情要做 。幸运的是,整个磨难离你而去 。有一个漫长的,相互关联的计算机系统和人工流程链,让这些组织出现在你的门口,但你只需要按一个按钮 。
这就是API对程序员的意义 。它们考虑了很多复杂性,并定义了一组相对简单的交互,您可以利用这些交互,而不是自己做所有的事情 。在任何一个软件项目中,你可能会直接使用几十个甚至上百个API,而这些API中的每一个都依赖于其他API,等等 。
通用API和API集成API是计算机编程中一个由来已久的概念,多年来它们一直是开发人员工具集的一部分 。传统上,API用于连接运行在同一台机器上的代码组件 。随着无处不在的网络的兴起,越来越多的公共API(有时称为开放API)变得可用 。公共API是面向外部的,可以通过互联网访问,允许你编写代码与其他厂商的在线代码交互;这个过程称为API集成 。**
这些类型的代码混搭允许用户在自己的系统上混合和匹配来自不同供应商的功能 。例如,如果您使用营销自动化软件Marketo,您可以将您的数据与Salesforce CRM功能同步 。
在这种情况下,“开放”或“公开”不应被解释为“免费” 。您仍然需要成为Marketo和Salesforce客户才能使用此功能 。但是这些API的可用性使得集成过程比其他方式简单得多 。(InfoWorld有许多你应该知道的公共API列表* 。)
Web服务和API您可能会想到本世纪初的术语web服务,并认为开放API的想法听起来非常相似 。事实上,Web服务是一种特定类型的开放式API,它满足一组非常严格的规范,包括由Web服务描述语言(WSDL,一种XML变体)指定的规范 。
Web服务旨在用作面向服务的架构(SOA)的一部分 。正如Nordic APIs博客所解释的,这给Web服务带来了坏名声,因为SOA从未完全实现其潜力 。服务到服务通信技术的进步——尤其是更轻便、更灵活的REST——也使得Web服务落后于公共API 。
应用程序接口Web服务最初被设计为使用SOAP(简单对象访问协议)进行通信,SOAP是一种通过HTTP发送XML文档的消息传递协议 。然而,现在大多数基于Web的API使用REST(比喻状态转移)作为它们的架构风格 。
Roy Fielding在2000年的博士论文中正式介绍了它 。它是一组架构组件、设计原则和交互,用于构建涉及任何类型媒体(文本、视频等)的分布式系统 。).从本质上讲,REST是一种构建系统的风格,它允许在网络上灵活地通信和显示信息,同时提供了轻松构建公共组件所需的结构 。
在REST API中,资源几乎可以是任何东西,但是例子包括用户、tweet列表和tweet搜索的当前结果 。这些资源中的每一个都可以通过资源标识符来寻址,在基于Web的REST API中,资源标识符通常是一个URL 。当应用程序使用标识符请求资源时,API以应用程序可以使用的格式(例如,JPEG图像、HTML页面或JSON)将资源的当前表示传递给应用程序 。
REST的一个很大的区别是它涉及到向请求应用程序发送数据 。虽然这提供了很大的灵活性,并允许应用程序对数据做任何想做的事情,但这是以效率为代价的 。通过网络发送数据进行处理要比在原地处理数据然后发送结果慢得多 。
当然,“高效”方法的问题在于,托管数据的系统需要预先知道应用程序想用它做什么 。所以,要想构建一个具有通用可用性和灵活性的API,REST是必由之路 。
示例API有很多公共API供你交互,很多都来自行业巨头 。通过API以编程方式访问一些平台公司代码的能力使它们本质上成为一个平台 。一些杰出的API示例包括:
Google APIs,允许您将代码连接到从地图到翻译的所有 Google 服务 。API 对 Google 来说非常重要,以至于他们收购了领先的 API 管理平台Apigee 。Facebook APIs,允许你以编程方式访问 Facebook 的社交图谱和营销工具 。(在 Cambridge Analytica 和其他丑闻的影响下,该公司一直在限制你可以通过这些 API访问的用户数据 。)
【网页调用api接口 api什么意思】为了真正理解API是如何工作的,让我们深入研究两个:Java API,Java开发人员用来与Java平台交互的API,以及Twitter API,一个公共API,您将用来与web服务的社交媒体交互 。
简介Java API是一个“开箱即用”的软件组件库,任何安装了Java开发工具包的人都可以使用 。这些组件执行常见的任务,通常会提高生产率,因为程序员不必每次都从头开始 。软件中使用的一个基本组件是一个叫做列表的东西,正如你所期望的,它记录了项目列表 。Java API定义了您可以在列表上执行的操作:添加项目、对列表排序、确定项目是否在列表中,等等 。它还指定了如何执行这些操作 。为了对列表进行排序,你需要指定列表的排序方式:按字母顺序,按数字降序,从最浅到最深的颜色等等 。
应用编程接口Twitter API是一个基于web的JSON API,它允许开发人员以编程方式与Twitter数据进行交互 。与Java开发工具包中包含的Java API不同,Twitter API是一个基于web的API 。你必须通过互联网向Twitter托管的服务发出请求才能访问它 。
使用基于web的API(比如Twitter ),您的应用程序将发送HTTP请求,就像Web浏览器一样 。但是对于人类的理解来说,响应并不是以网页的形式传递的,而是以应用程序容易解析的格式返回的 。为此,有各种格式 。Twitter使用一种流行且易于使用的格式,称为JSON 。
Twitter的基本元素之一是tweets 。Twitter API告诉你可以用tweets做什么:搜索tweets,创建tweets,收集tweets 。它还告诉您如何执行这些操作 。要搜索推文,您需要指定搜索标准:您要查找的术语或主题标签、地理位置、语言等 。
API设计API设计者制定API的“内容”和“方法”的过程 。和其他任何可以创造的东西一样,API设计中的思路和程度不同,导致API质量程度不同 。一个设计良好的API具有一致的行为,考虑到它的上下文,并且牢记用户的需求 。
API中的一致行为很大程度上影响了它的学习速度和程序员在使用时出错的可能性 。一般来说,执行类似操作的API应该表现类似,不管它们在技术上有什么不同 。作为API不一致的一个例子,让我们来看看向Java中国列表添加项目的两种方法:
尽管向列表中添加条目的两种方法做了同样的事情,但是它们的返回类型(boolean和void)是不同的 。使用该API的开发人员现在必须跟踪哪个方法返回哪个类型,这使得该API更难学习,其使用也更容易出错 。这也意味着使用这些方法的代码变得不太灵活,因为如果你想改变添加元素的方式,它必须改变 。
考虑上下文是一致性的另一种形式,尽管它与API之外的因素有关 。一个很好的非软件例子是道路规则(右侧通行或左侧通行)如何影响不同国家的汽车设计 。汽车设计师在将驾驶座放在汽车的右侧或左侧时,会考虑环境因素 。
在API设计中,考虑上下文通常意味着您遵循普遍接受的最佳实践,并从您的用户可能熟悉的其他API中获取灵感 。假设您正在构建一个库,它为Java应用程序提供了一种新的列表,这种列表可能是专门为处理非常大的列表而设计的 。这个列表的API应该包含一个add方法,其行为方式与Java List add方法相同 。这样,用户可以很容易地采用你的库,因为他们已经知道如何使用它 。
在API设计中,了解用户并牢记他们的需求是至关重要的 。如果你理解他们的痛点,帮助他们避免这种痛苦,那么你的API就会有快乐的用户 。出于同样的原因,您可能会选择打破良好的API设计的其他规则 。如果你正在编写一个Web API,今天事实上的标准是使用JSON作为交换格式 。然而,如果您的API将服务于检索大量数据的科学用户,那么JSON将过于冗长和乏味,无法很好地为他们服务 。因此,您可能会选择使用像GRIB这样的二进制格式,尽管从一般意义上来说这是一个非常不寻常的选择 。
API是软件设计的重要组成部分,存在于软件栈的每一层 。它们提供了一种定义和管理抽象的方法,告诉我们可以用软件组件做什么以及如何做 。设计良好的API支持高效、流畅和容易的采用和使用,而设计不佳的API往往每次使用都会令人头疼 。
摘要API是一组用于构建应用软件的子程序定义、协议和工具 。一般来说,这是各种软件组件之间的一组定义良好的通信方法 。
如果这篇文章对你有帮助,请点赞转发 。也欢迎大家谈谈自己学习期间的一些心得体会,让大家一起学习,一起成长!《java架构大仙》阅读更多技术干货文章 。
推荐阅读
- 白斑对称长属于什么类型 白癜风白斑
- 银屑病不能吃哪些食物
- 小孩肚子疼怎么办??
- 宁波十大特色点心 宁波有什么好吃的
- 邮政物流寄大件电话 邮政快递电话
- 请问孕妇什么时候吃dha?
- 哈尔滨有哪些可以带走的特产 黑龙江哈尔滨特产
- 芭比之梦幻仙境2 芭比之钻石城堡
- 尿多是什么原因