api是什么意思中文,api是什么的缩写

  

  

架构师必备技能指南:正确甄别API REST API RESTful API Web Service之间的差异与联系

  

  

  看到API你会想到什么?是接口,第三方调用,还是API文档?乍一看,你可能会觉得这太熟悉了。这不是系统开发的日常系列吗?但是仔细想想就会发现,API这个概念在你脑子里是那么的模糊。你怎么通过搜索引擎搜索API,会看到这样的信息:API ――应用编程接口(API),太抽象了。接下来我将结合开发中总结的一些经验,通俗的讲一下API、REST API、RESTful API、Web Service之间的联系和区别。   

  

     

  

  1、API 与 REST API   

  

  什么是API?这里引用维基百科给出的定义:应用编程接口(英文:application programming interface,简称:API;也称为应用程序编程接口(API ),是连接软件系统不同组件的协议。这个API的定义过于宽泛和抽象。一般来说,API是一个应用程序与另一个应用程序“通信”的方式(协议)。在Web应用开发中,API是我们通过网络检索数据的主要方式。API文档会告诉你URL列表、查询参数、请求方法和检索数据的响应状态。其目的是降低Web应用程序开发的难度,共享数据(文本、音频、视频、图片等。)在两个应用之间,屏蔽了里面复杂的实现细节。   

  

  REST是具象状态转移的缩写,直译为:表达状态的转移。REST API是一套关于如何构建Web应用API的架构规则、标准或指南,或者说REST API是一种遵循API原则的架构风格。REST是专门为Web应用设计的,其目的是降低开发的复杂度,提高系统的可扩展性。以下是设计REST风格系统架构时需要满足或遵循的一些基本条件和原则:   

  

  1.在REST架构中,Web中的一切(文本、音频、视频、图片、链接)都可以被抽象为一种资源。2.在REST架构中,每个资源都有自己唯一的资源标识符,当资源的状态改变时,这个标识符不会改变。3.在REST架构中,所有操作都是无状态的。REST架构遵循CRUD的原理,所有资源都可以通过GET、POST、PUT、DELETE四个行为完成相应的操作。4.可缓存(可选)。在REST架构中,需要缓存来有效地处理大量请求。5.一致的界面。现在,知道了API和REST API的基本概念,它们之间有什么异同?如果按照数学中集合的概念来解释API和REST API的关系和区别,API是REST API的超集,REST API是API的子集;的所有REST API都是API,但并非所有API都是REST API。更流行的解释是,所有的男人都是人,但不是所有的男人都是男人。   

  

  2、REST API 与RESTful API   

  

  在第一节中,我们学习了什么是REST API,然后我们讨论了REST API和RESTful API的异同。很多初学者很容易把两者等同起来,以为RESTful API就是REST API,可能只是简单的字面理解。当你深刻理解了两者的本质,你会发现其实不然。REST API是Web API设计的规范或指导原则,RESTful API是架构设计原则或规范的具体实现。也就是说,RESTful API是REST API的非正式实现,因为REST API的实现方式有很多种,RESTful API只是其中一种,并不完全符合REST API的所有设计原则。每个开发人员在实现REST架构时都会有不同的侧重点。   

  

  很多初学者容易混淆REST API和RESTful API的概念。我觉得他们可能只是看字面意思而不关注自己的意思(就像认识汉字一样,边读边看,断章取义)。这就好像很多人会把变性人等同于女性一样。跨性别者可能有和女性一样的五官,但跨性别者不能生孩子。只是满足了定义女人的大部分条件(实现),但本质上不是女人。   

  

  接下来举一个简单的例子来加深对REST API和RESTful API的理解。以下是用于执行凝乳操作的RESTful API设计案例:   

  

     

  

  注:资源是指一个资源的名称,可以是学生(学生)、老师(老师)、书(书)等。而且通常用名词来表示;{id}是指资源的唯一标识符。   

  

  下面是一个具体的例子,以学生管理为例,来设计学生管理的API。   

学生资源包括ID,姓名和所学课程信息,学生资源信息如下:

  

  

现在,我们需要将学生数据保存到数据库,然后执行查询、修改和删除学生数据的操作。学生管理API的使用者调用的API如下:

  

1、创建学生资源: http://www.example.com/student2、获取所有学生资源: http://www.example.com/students3、获取ID=1001的学生资源: http://www.example.com/student/10014、修改ID=1001的学生资源: http://www.example.com/student/10015、删除ID=1001的学生资源: http://www.example.com/student/1001前面的内容说到,API共享数据资源,而屏蔽内部实现,API的使用者(客户端)关注的是资源(读懂数据),并不需要了解API内部构造;API的提供者(服务端)只关注自己的内部实现,而不关系API使用者(客户端)的状态。为了加深对这一概念的理解,下面给出学生管理API的内部实现示例:

  

  

说明:

  

示例代码是基于Spring MVC进行实现的。

  

除了上述的内容之外,你还可以通过提供键值对的方式对查询数据进行过滤,如获取所有的学生数据时,只想获取性别为女性的学生数据,则可以通过这样的方式来完成:

  

http://www.example.com/students?gender=femaleTip:如果API拥有对数据过滤的功能,对应服务端的API实现代码也需要做调整。

  

在前面的内容中,我们提到RESTful API是REST API的非正式实现方式或规范。为什么这么说呢?因为在RESTful API的设计中,我们完全可以通过GET的方式完成CURD操作,也可以通过DELETE行为来创建资源,通过POST行为来修改资源,它的实现方式并不严谨或者说并没有严格按照REST API提出的约束条件来进行。所以说RESTful API是REST API的非正式实现方式。

  

3、REST与Web Service

  

3-1、什么是Web Service?

  

如万维网联盟(W3C)所述,Web Service提供了在各种平台和/或框架上运行的不同软件应用程序之间可以进行互操作的标准方法。Web Service的特点是具有良好的互操作性和可扩展性,以及由于使用XML而可以对程序处理过程进行描述。它们可以以松散耦合的方式组合不同的服务以实现复杂的操作。提供简单服务的程序可以通过相互交互,以提供复杂的增值服务。

  

两个Web Service之间主要通过HTTP网络协议进行通信,如我们熟知的SOA(面向服务的体系架构),主要依赖于XML-RPC和SOAP(Simple Object Access Protocol,即简单对象访问协议)。

  

Tip:千万不要将SOA(面向服务体系架构)和SOAP(简单对象访问协议)搞混,前者是一种架构设计形式,后者是一种数据交换协议。

  

简单的一个示例:假设一个Web Service A提供允许其他应用程序通过URL获取用户信息的功能: http://www.abc.com/{id}。id是用户的唯一标识符,请求此URL将获得用户信息。现在假设浏览器、手机、桌面应用程序的用户都要获取服务A提供的用户信息,这三者只需要请求服务A提供的URL地址,并输入用户id信息即可。至于者三个不同客户端的实现方式(编程语言)是什么与服务A 没有任何关系,只要能够解析出服务A返回的XML文档即可。这样,应用程序之间交换数据就可以不用依赖于具体的语言和环境。这就好比不同国家不同语言的人,只要能够知晓对方语言的语法结构,两个人就可以进行交流。

  

3-2、Web Service的优点

  

使用Web Service有如下的几个优点:

  

1、互操作性:Web Service允许应用程序之间进行通信,交换数据和共享服务。2、可用性:Web Service的功能可以从简单的信息查找到复杂的算法计算。3、可重用性:Web Service之间可以相互组合,以提供更为复杂的服务,由于其互操作性的特点,可以轻松的在其他的服务中重用Web Service组件,提高了服务的重用率。4、易于部署:Web Service可以部署在基于Internet标准的容器中,如Apache、Axis2等,以提供HTTP或者WSDL(网络服务定义语言)驱动的服务。5、成本低:Web Service是通过打包成Web服务组件进行部署,从而降低了使用的成本。3-3、Web Service的类型

  

目前,Web Service主要有两大流派:

  

1、基于SOAP的Web Service : SOAP(简单对象访问协议)是一种基于XML的协议,用以访问Web Service。其接口以机器可处理的格式进行描述,称为WSDL(Web服务定义语言)文档。通过使用标准的的XML文档来描述Web Service,在XML文件中,会详细记录接口的信息,如消息的格式、传输协议以及交互的位置等信息。2、基于REST的Web Service :REST(Representational State Transfer)是一种软件架构,它使用JSON来描述数据格式,最重要的是HTTP传输协议对REST来说是非必须的。3-4、REST与SOAP的区别和联系

  

下面,通过一张表格来对比REST与SOAP之间的异同:

  

  

总结

  

如上所述,我们了解了什么是API,什么是REST API,什么是RESTful API以及Web Service的相关概念。API代表应用程序编程接口,是一种较为宽泛的定义或者说是一种协议,作为软件程序之间相互通信的接口而存在。REST API是API的一个子集,所有的REST API都是API;RESTful API是对REST API架构风格的一种非正式实现方式。API与Web Service都是服务提供者和服务消费者之间的通信手段。最后,为了能够快速的识别API与Web Service之间的差异,将这两种手段的不同之处整理成对照表如下:

  

相关文章