当你看到API接口你会想起什么?是接口、第三方调用、还是API文档?初看你可能会觉得这太熟悉了,这不是系统开发日常系列吗?但你仔细想一想,你会发现API的概念在你脑海里是如此的模糊。如何你通过搜索引擎检索API,你会看到类似这样的信息:API——Application
Programming
Interface(应用程序编程接口),这太抽象了。接下来,我将结合在开发中总结的一些经验,以最通俗的方式聊聊API、REST
API、RESTful API以及Web Service这四者之间的联系与区别。

1、API 与 REST API

什么是API?这里引述维基百科给出的定义:应用程序接口(英语:Application Programming Interface,缩写:API;又称为应用编程接口)是软件系统不同组成部分衔接的约定。这个对API的定义太过于广泛和抽象,而通俗的讲,API是一段应用程序与另一段应用程序相互“交流”的方式(协议)。在Web应用程开发中,API是我们通过网络进行数据检索的一种主要方式,API文档将告知你检索数据的URL列表、查询参数、请求方式以及响应状态,其目的是降低Web应用程序开发难度,共享两个应用程序之间的数据(文本、音频、视频、图片等),而屏蔽其内部复杂的实现细节。
REST是Representational State Transfer的缩写,直译过来就是:表述状态的转移。REST API是一组关于如何构建Web应用程序API的架构规则、标准或指导,或者说REST API是遵循API原则的一种架构风格。REST是专门针对Web应用程序而设计的,其目的在于降低开发的复杂度,提高系统的可伸缩性。
现在,了解了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与RESTful API之间的异同。很多初学者很容易将这两者等同起来,认为RESTful API就是REST API,这可能是单纯的从字面上去理解了,当你深入的去了解两者的本质后,你会发现其实不然。REST API是Web API设计的一种规范或者指导原则,而RESTful API则是这中架构设计原则或者规范的一种具体实现方式。也就是说,RESTful API是REST API的非正式实现方式,因为实现REST API的方式有很多,RESTful API只是其中一种,且没有完全满足REST API的所有设计原则,每个开发者在实现REST 架构时的则重点都会有差别。

3、REST与Web Service

3-1、什么是Web Service?

Web Service提供了在各种平台和/或框架上运行的不同软件应用程序之间可以进行互操作的标准方法。Web Service的特点是具有良好的互操作性和可扩展性,以及由于使用XML而可以对程序处理过程进行描述。它们可以以松散耦合的方式组合不同的服务以实现复杂的操作。提供简单服务的程序可以通过相互交互,以提供复杂的增值服务。
两个Web Service之间主要通过HTTP网络协议进行通信,如我们熟知的SOA(面向服务的体系架构),主要依赖于XML-RPC和SOAP(Simple Object Access Protocol,即简单对象访问协议)。

3-2、Web Service的优点

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

总结

如上所述,我们了解了什么是API,什么是REST API,什么是RESTful API以及Web Service的相关概念。API代表应用程序编程接口,是一种较为宽泛的定义或者说是一种协议,作为软件程序之间相互通信的接口而存在。REST API是API的一个子集,所有的REST API都是API;RESTful API是对REST API架构风格的一种非正式实现方式。API与Web Service都是服务提供者和服务消费者之间的通信手段。
轻易云集成平台,一套软件、一个平台,打通业界各大软件系统与硬件设备,消除系统之间的数据孤岛。内置业界知名各大软件系统接口,免除用户技术开发和投入,接口方式灵活,使用安全可靠。对接业界主流数据库(Oracle、SqlServer、Postgresql、Mysql等),也可对接WebAPI、WebService等。已对接的软件商系统包括但不限于:SAP、Oracle、用友、金蝶、鼎捷、安达发、泛微、微信、钉钉。已对接的硬件设备包括但不限于:Fanuc发那科、Brother兄弟、三菱、西门子、海德汉、广数、华中数控、精雕、宝元、新代、安达发ADT。
轻易云集成平台助你打通系统及硬件间的通道,是现代企业实现系统集成的完美桥梁。

如何区别API、REST API、RESTful API和Web Service之间的异同相关推荐

  1. 我是如何根据豆瓣api来理解Restful API设计的

    1.什么是REST REST全称是Representational State Transfer,表述状态转移的意思.它是在Roy Fielding博士论文首次提出.REST本身没有创造新的技术.组件 ...

  2. Restful API是什么?初探Restful API,传统接口写法与Restful API接口写法区别

    Restful API是什么?初探Restful API?为什么要用Restful API?传统接口写法与Restful API接口写法区别,带着这些问题我们来具体了解下Restful API: 目录 ...

  3. 传统接口写法与Restful API 区别

    说到API接口设计有的喜欢用Web Service,有的喜欢用WCF,当然也有还在用最原始的ashx,aspx页面的.无论采用什么方式能很好的满足业务需求就ok,但是不同的方式在扩展性.易用性,可维护 ...

  4. 【技术杂谈】RPC和RESTful API入门篇

    前言 这两天在和同学谈到RPC.RESTful时候发现自己对这两者并不是很理解,于是查阅了网上相关资料加上自己的理解写下本篇文章以加深印象,由于本人水平有限,若对这两者的理解有不妥之处望指出. 什么是 ...

  5. rest api是什么_一文搞懂什么是RESTful API

    RESTful接口实战 首发公众号:bigsai 转载请附上本文链接 文章收藏在回车课堂 前言 在学习RESTful 风格接口之前,即使你不知道它是什么,但你肯定会好奇它能解决什么问题?有什么应用场景 ...

  6. RESTful API的理解

    技术交流的时候遇到了这样的一个问题,被问及开发中用到的是不是Restful API,我说的是,我们现在用到的不属于完全是Restful API.因为我了解到的Restful API,是 通过具体的UR ...

  7. 二十八、Node.js中的RESTful API和接口设计

    @Author:Runsen @Date:2020/6/9 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  8. 使用ASP.NET Core 3.x 构建 RESTful API - 1. 开始

    以前写过ASP.NET Core 2.x的REST API文章,今年再更新一下到3.0版本. 预备知识:ASP.NET Core 和 C# 工具:Visual Studio 2019最新版(VSCod ...

  9. restful api和普通api有什么特点_Django REST Framework教程(1): 什么是序列化和RESTful的API

    小编曾经承诺的Django REST Framework原创系列教程终于赶上了2020年那年夏天的尾巴,姗姗而来.我们将用不少于10篇的原创文章系统性地介绍如何使用这个框架开发符合RESTful规范的 ...

最新文章

  1. 生物信息「知识图谱」
  2. 学会这几个Redis技巧,让你的程序快如闪电
  3. Android框架攻击之Fragment注入
  4. 同居1月 VS 同居1年,太真实了...
  5. glVertexAttribPointer第一个参数理解
  6. Java 8 Friday:更好的异常
  7. silverlight 如何在浏览器的新页面里打开一个xaml
  8. html中描述性文本,HTML5文本 描述性信息 引述
  9. 删除PHP配置文件中的注释行
  10. 技术开发人员,一些需要注意的权利和义务
  11. Linux 进程热升级 共享库的动态替换
  12. svn 分支上新增文件合并发生冲突_SVN使用:分支合并及解决冲突详解
  13. 合作共赢,共同飞跃 | DDG一站式数字化转型集成解决方案正式发布
  14. wIN 7 一键清理垃圾
  15. 客户体验改善计划的用户注销通知导致服务器自动重启
  16. 向mysql写入时间_Python向Mysql写入时间类型数据
  17. 75个JavaScript面试题集锦,内含解答,自测 JS 掌握程度
  18. http://blog.sina.com.cn/s/blog_7f5ad8c20101cnna.html#commonComment
  19. Android 以图找图功能
  20. 财务自由,财务不自由,人生幸福

热门文章

  1. 技术至简-1:信源编码VS信道编码
  2. Kubernetes:基于命令行终端UI的管理工具 K9s
  3. Browser 浏览器内核
  4. 虚拟自动取款机ATM设计(C语言)
  5. oracle 11.2.0.3RAC升级到11.2.0.4
  6. 易语言 图片插入超级列表框_新手教程!如何在PDF文件中插入图像
  7. goahead用jst进行简单互动
  8. 德鲁克:优秀的管理者,都做到了这3点
  9. Kibana:Kibana Query Language - KQL
  10. Yolov5模型使用教程