1.WebApi

也可叫做HTTPService, 基于HTTP协议 ,我们日常网站、系统都是使用这种形式进行访问我们的应用程序。在处理数据上WebApi效率较高。WebApi无状态,相对WebService更轻量级。

HTTP-GET 和 HTTP-POST

HTTP-GET和HTTP-POST是标准协议,使用HTTP对参数进行编码并将参数作为名称/值对传递,还使用关联的请求语义。每个协议都包含一系列HTTP请求标头,HTTP请求标头及其他一些信息定义客户端向服务器请求哪些内容,哪个服务器用一系列HTTP响应标头和所请求的数据进行响应。

HTTP-GET使用MIME类型 application/x-www-form-urlencoded(将追加到处理请求的服务器的 URL 中)以URL编码文本的形式传递其参数。

HTTP-POST参数也是 URL 编码的。 但是名称/值对是在实际的 HTTP 请求消息内部传递的,而不是作为URL的一部分进行传递。

2.WebService

基于SOAP协议 ,相比HTTPService能处理些更加复杂的数据类型。
WebService 就是一个应用程序,它的一个最基本的目的就是提供在各个不同平台的不同应用系统的协同工作能力。向外界暴露出一个能够通过Web进行调用的API。

SOAP是一种在HTTP协议的基础上,一个基于XML的协议。用户web上交换结构化信息和类型信息。SOAP请求是HTTP POST的一个专用版本,遵循一种特殊的xml消息格式,Content-type设置为: text/xml,任何数据都可以xml化。

SOAP协议规范

由4个主要的部分组成:

  1. SOAP封装 (Envelop)定义了一个的框架(描述消息的内容多少、谁发送、谁应当接受、处理,以及如何处理它们)。
  2. SOAP编码规则 (Encoding Rules)定义了可选数据编码规则,用于表示应用程序定义的数据类型和直接图表,以及一个用于序列化非语法数据模型统一标准。
  3. SOAP RPC表示 (RPC Representation)定义一个远程调用风格(请求/响应)信息交换的模式。
  4. SOAP绑定 (Binding)定义了SOAP和HTTP之间的绑定和使用底层协议的交换。

SOAP协议可以简单地理解为:SOAP=RPC+HTTP+XML,即采用HTTP作为通信协议,RPC(Remote Procedure Call Protocol - 远程过程调用协议)作为一致性的调用途径,XML作为数据传送的格式,从而允许服务提供者和服务客户经过防火墙在Internet上进行通信交互。

3.RestApi

REST(Representational State Transfer)是一种轻量级的Web Service架构, 可以完全通过HTTP协议实现 。其实现和操作比SOAP和XML-RPC更为简洁,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。 REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法(Verb)。

REST并没有一个明确的标准,而更像是一种设计的风格。但是为什么目前各大平台API为什么不使用RESTful的风格来进行开发呢,比如:URL命名格式,只有post get 并没有put delete ,更加没有用到HttpStatusCode ,他们是出于什么目的没有遵循这样的面向资源的开发和设计模型?
我想主要原因有如下:

  1. 因为支持那些行为能带来的好处显然不及要付出的代价
  2. 开发效率低【不适应于自动化处理】
  3. 运行效率低【需要比较复杂的字符串匹配模式】
  4. 环境适应性差【不适应参数复杂的情况】
  5. 如果不是有客户硬性需求,那完全就是画蛇添足,为了这种鸡肋的风格又何必呢?

SOAP与HTTP的区别

WebService相对WebApi的优点

  1. 接口中实现的方法和要求参数一目了然
  2. 不用担心大小写问题
  3. 不用担心中文urlencode问题
  4. 代码中不用多次声明认证(账号,密码)参数
  5. 传递参数可以为数组,对象等…
  6. webapi类似于cs架构,需要同时开发客户端API和服务器端程序, 而WebService则类似于bs架构,只需要开发服务器端,不需要开发客户端,客户端只要遵循soap协议,就可以调用。

WebService相对WebApi的缺点

  1. 由于要进行xml解析,速度可能会有所降低。
  2. 编写WebService比编写HTTP接口复杂很多。

webService 可以被WebApi替代

webService完全可以被WebApi替代,而且现在的开放平台都是用的WebApi实现的。

  1. 在同一套内部系统中如果跨开发工具多种语言协同开发使用,最佳的方式还是WebService。用HTTP接口麻烦啰嗦。因为请求调用频率太高且繁琐。
  2. 在同一开发平台中基于web架构的客户端或者是多客户端,PC,WEB,APP共存环境,要实现与后台前后端分离,WEBAPI首选。WebApi的出现主要目的就是实现前后端分离。

Restful与SOAP的区别

  1. 安全性:SOAP会好于restful
  2. 效率和易用性(REST更胜一筹)
  3. 成熟度(总的来说SOAP在成熟度上优于REST)

6.MVC和WebApi对比

  1. MVC是建站的一种框架,倾向于返回用户的页面请求
  2. WebApi倾向于返回用户数据请求
  3. MVC直接继承System.Web.Mvc.Controller
  4. 而webapi继承的是System.Web.Http.ApiController

7.三种Web服务交互方案

  1. REST 描述了一个架构样式的网络系统,比如 web 应用程序。REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。
  2. SOAP 简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
  3. RPC 远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
1.WebApi也可叫做HTTPService,基于HTTP协议,我们日常网站、系统都是使用这种形式进行访问我们的应用程序。在处理数据上WebApi效率较高。WebApi无状态,相对WebService更轻量级。HTTP-GET 和 HTTP-POSTHTTP-GET和HTTP-POST是标准协议,使用HTTP对参数进行编码并将参数作为名称/值对传递,还使用关联的请求语义。每个协议都包含一系列HTTP请求标头,HTTP请求标头及其他一些信息定义客户端向服务器请求哪些内容,哪个服务器用一系列HTTP响应
REST LET介绍 Rest let项目为“建立 REST 概念与 Java 类之间的映射”提供了一个轻量级而全面的框架。它可用于实现任何种类的 REST 式系统,而不仅仅是 REST Web 服务。 Rest let项目受到Servlet API 、JSP( Java Server Pages)、HttpURLConnection及Struts等 Web 开发技术的影响。该项目的主要目标是:在提供同等功能的同时,尽量遵守Roy Fielding博士论文中所阐述的 REST 的目标。它的另一个主要目标是:提出一个既适于客户端应用又适于服务端的应用的、统一的 Web 视图。 Rest let的思想是:HTTP客户端与HTTP服务器之间的差别,对架构来说无所谓。一个软件应可以既充当 Web 客户端又充当 Web 服务器,而无须采用两套完全不同的 API s。 该程序已经实现了 rest 风格的 API ,二次开发非常方便!
文章目录1.关于 REST ful2.关于 webservice 1.关于 REST ful 关于 REST ful,在这个时代已经是让人耳熟能详的概念了,但是好像有没有人能把这个词解释清楚, 我认为, REST ful其实是一种基于特定uri编写风格的 web 项目,其本质是基于http协议 web 服务,说的更通俗一些,就是去搭建了一个 web 工程,发布到容器以后,其uri会以一种特定的形式出现,来表达不同的信息。 这里...
从2005年开始就开始有基于服务的开发方式,到08年时候 微软和sun等公司都已经提供了很多基于服务的开发框架 。 微软 .net 平台的基于服务的框架主要有:.NETRemoting、 webservice 、重量级的WCF 等框架。 随着互联网技术的发展Asp.net web Form 逐渐被Asp.net MVC 替换。 相信在互联网服务开发方向想Asp.net MVC WEB API 这...
乱花渐欲迷人眼,浅草才能没马蹄! 接触一个新技术的时候,脑海中总是会跳出这句诗。附庸风雅,非我本意。主要还是因为很多网络学习资料,把简单的东西搞得很复杂;该有内涵的时候,又俗不可耐。 前段时间,写过一篇博客记录 webservice 的学习,今天回头一看,也成了垃圾。今天就再重新梳理一下。 不严谨的给个官方定义:不会说,不说了。 webservice 作用两个方面 1)异构系统信息交互。(例如:一个公司...
文章目录一、分布式框架二、.NET Remoting Web Service三、WCF四、 Web API 五、分布式技术这么多,我该选谁? 一、分布式框架 早在1996年Gartner就前瞻性地提出了面向服务架构的思想(SOA),SOA 的走红在很大程度上归功于 Web Service 标准的成熟和应用的普及。 Service Oriented Ambiguity 中文一般理解为:面向服务架构,简称SOA,这个概念算得上微服务的鼻祖了。 SOA 的提出是在企业计算领域,就是要将紧耦合的系统,划分为面向业务的、粗
一、    基于SOAP的 WebService 解决方案 1 、SOAP协议 简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 2、SOAP与JAX-WS的关系 JAX-WS 是SOAP技术的一个 Java 实现规 开发 webservice 应用程序中离不开框架的支持,当open-open网站列举的就有很多种,这对于开发者如何选择带来一定的疑惑。性能 Webservice 的关键要素,不同的框架性能上存在较大差异,而当前在官方网站、网络资料中可以方便的找到各自框架的介绍,但是很少有针对不同框架性能测试数据。本文选择了比较流行几个框架: Apache Axis1、Apache Axis2...
参考如下地址文档: https://www.cnblogs.com/xiaoyaowuming/p/5622790.html http://blog.csdn.net/zuoanyinxiang/article/details/50434247 httpservice通过post和get得到你想要的东西 webservice 就是使用soap协议得到你想要的东西,相比httpservice能处理...
在.net平台下,有大量的技术让你创建一个HTTP服务,像 Web Service,WCF,现在又出了 Web API 。在.net平台下,你有很多的选择来构建一个HTTP Services。我分享一下我对 Web Service、WCF以及 Web API 的看法。 Web Service   1、它是基于SOAP协议的,数据格式是XML   2、只支持HTTP协议   3、它不是...
WebService 是一种基于 Web 协议进行通信的技术,它允许应用程序在网络上交换数据,而不需要考虑具体的平台或语言。 WebService 可以提供多种服务,例如获取数据、处理事务或执行特定的功能等。调用 WebService 可以使用多种方式,包括以下几种: 1. 使用SOAP协议调用 WebService :SOAP(简单对象访问协议)是一种基于XML的协议,用于在网络上进行应用程序之间的通信。SOAP协议定义了如何打包和传输消息,以及如何使用 Web 服务的接口。通过SOAP协议调用 WebService 需要使用SOAP客户端,可以使用多种编程语言和框架创建。 2. 使用 REST ful风格调用 WebService REST (Representational State Transfer)是一种基于HTTP协议的 Web 服务架构风格,它提供了一种简单的、可扩展的机制来进行 Web 服务之间的通信。 REST ful Web 服务使用HTTP方法(例如GET、POST、PUT和DELETE)来执行各种操作,例如获取资源、更新资源、删除资源等。通过 REST ful风格调用 WebService 需要使用HTTP客户端,可以使用多种编程语言和框架创建。 3. 使用 Web API 调用 WebService Web API Web 应用程序接口)是一组定义在 Web 服务器上的程序接口,用于访问 Web 服务或 Web 资源。 Web API 可以使用SOAP或 REST ful协议进行通信,可以使用多种编程语言和框架创建。通过 Web API 调用 WebService 可以使用多种方式,例如HTTP客户端、 Web 浏览器、 Web 表单等。 总的来说,调用 WebService 需要先确定 WebService 的接口和协议,然后选择合适的客户端工具或框架,最后使用编程语言创建客户端代码来访问 WebService 。 <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> 项目里就引用了这个
Swagger注解的使用 吴里庆庆: 我发现一个问题 就是我的请求体是text/plain格式 的 如果我想给这个添加example value添加不上。第一种:@ApiImplicitParam(name = "data", value = "需要处理的文本内容", required = true, defaultValue = "hello world", example = "qwu",dataType = "string", paramType = "body")第二种:@Parameter(description = "测量点业务数据", example = "hello world") 第三种 @io.swagger.v3.oas.annotations.parameters.RequestBody(description = "The request body", required = true, content = { @Content(mediaType = "text/plain", examples = { @ExampleObject(value = "{\n" + "\"name\": \"John\",\n" + "\"age\": 30,\n" + "\"city\": \"New York\"\n" + })发现三个都不起作用 使用curl执行Http请求 甜苦酱汁: 写的很详细,感谢博主。 Java中csv文件读写分析 告别悲伤: 谢谢你,这么多文章。您能脱颖而出不是没有原因的。虽然不认识,但是真的谢谢你 Spring SpEL表达式的使用