Web服务与api有何不同?

时间:2014-06-17 04:41:17

标签: web-services api rest soap

我正在学习开发Web服务。据我所知,有两种方法1. SOAP和2. REST。 Soap主要使用XML进行通信,而REST是HTTP请求。 我可以使用google api,twitter api等外部API,也可以将imdb movie api作为我的网络服务?这些API中的大部分都是restAPI,所以这意味着如果我开发一个电影信息网络服务它会是宁静的吗?我目前正在学习创建一个Web服务,它将使用imdb http请求将电影信息返回给它的api。内部的Web服务可以有不同的外部API,如imdb api,这是休息吗?

1 个答案:

答案 0 :(得分:1)

你的困惑是可以理解的。有很多相关但略有不同的术语。澄清:

API 应用程序编程接口(或API)是某些功能的提供者与某些功能的使用者之间的“契约”。 API包括输入,它们的类型,输入上的任何前提条件,输出上的预期输出和任何后置条件,失败模式以及成功使用该功能所需的任何其他信息(例如上下文中的函数签名)编程语言API或Web API上下文中的请求路径。)

服务 API显然不是特定的实现。它是一种规范,允许某些功能的提供者或消费者独立开发其组件并成功地相互集成(或与其他实现者/消费者)。另一方面,服务是API的特定实现。例如,Feedly和(现已不存在的)Google阅读器是同时实现相同Google阅读器API的服务。

对于SOAP与REST,SOAP和REST都使用HTTP。但是,它们对请求和响应的结构采用略有不同的方法/样式。根据定义,Web API不仅仅是用于API的RESTful。如果Web API遵循REST原则,则它是RESTful。特别是,如果URL对应于资源,则API是RESTful,并且作用于这些资源的动词是HTTP方法(如GET,PUT,POST和DELETE)。例如,在RESTful API中,通过使用“GET”检索资源,使用“PUT”附加到它,并使用“POST”进行覆盖。对于修改项目列表,通常具有引用特定元素和元素列表的URL。许多所谓的“REST”API并不是最严格,最纯粹的术语中的REST。例如,许多Google API共享REST的许多属性/想法,但通常在URL的路径中包含用于指示所执行操作的动词(而最严格意义上的REST不允许这样做,因为URL应该表示名词,仅使用HTTP方法作为唯一的动词)。

最后,回答最后一个问题,是的,可以使用不同的内部API和外部API。话虽如此,术语“API”是否真正适用于内部版本是有争议的,取决于该功能是否有单独的内部“消费者”和“提供者”。如果内部版本恰好是内部实现的任何内容,那么它是否可以被标记为“API”是有争议的。