看到许多中小项目的webservice接口的源代码,不禁有个吐槽的冲动。除了会用CXF,Axis2等神级框架,其他的懒得动了,都是Ctrl+V,Ctrl+C,把其他模块的Request,Response贴过来。一旦增加某个特性,不得不在所有Request,Response遨游一遍。早知今日,何必当初呢。

  写一个好的Weservice Interface,关键是要多多总结。除了有Request,Response之外,还有很多。总结如下有:

    Request:webservice的输入。

    Response:webservice输出。

    DataRsponse:带结果集的webservice输出。

    ResultData:结果集,不同的interface,其ResultData不一样。

    ReslutInfo:描述调用请求成功或者失败的对象。

    WebServiceTemplate:模板类,定义如何调用下层函数,如何处理异常错误的流程

    ResultDataCallback:回调类,与template配合,适用【返回结果集】操作,比如【获取用户信息】,【下订单】

    ResultCallback:回调类,与Template配置,适用于【不返回带结果集的接口,比如【修改用户名】

    ResponseFactory:用来组装 webservice消息 的工厂类。

    ResultInfoFactory:用来处理异常信息的 工厂类,这个一个接口,为它实现一个默认实例吧。

  有了这些小弟们,任何webservice接口的定义都能轻易搞定,不信我举个例子给你,咱们以【加法】为例!

  AddRequest:

View Code

public class AddRequest extends Request{private int add;private int added;public int getAdd() {return add;}public void setAdd(int add) {this.add = add;}public int getAdded() {return added;}public void setAdded(int added) {this.added = added;}}

  AddResonse:

View Code

public class AddResponse extends DataResponse<AddResultData>{private AddResultData resultData;public AddResultData getResultData() {return resultData;}public void setResultData(AddResultData resultData) {this.resultData = resultData;}}

  AddResultData:

View Code

public class AddResultData implements ResultData{private int sum;public AddResultData(int sum) {super();this.sum = sum;}public AddResultData() {super();}public int getSum() {return sum;}public void setSum(int sum) {this.sum = sum;}
}

  一个简单的webservice接口:

View Code

public class Soap {public AddResponse add(final AddRequest request){return WebServiceTemplate.doResult(new ResultDataCallback<AddRequest,AddResponse,AddResultData>(){public AddResultData done() throws Exception {return new AddResultData(request.getAdd()+request.getAdded());}public AddResponse getRsp() {return new AddResponse();}});}}

  一个简单的TestCase测试:

View Code

public class TestSoap {@Testpublic void testAdd(){AddRequest add = new AddRequest();add.setAdd(1);add.setAdded(2);Soap soap = new Soap();AddResponse rsp =soap.add(add);assertEquals(3,rsp.getResultData().getSum());assertEquals("0",rsp.getResultInfo().getResultCode());assertEquals("success",rsp.getResultInfo().getResultDesc());}}

  虽然这些很简单,但是能够解决80%的问题。剩下20%还要根据实际情况来定。况且,这些代码在你的手中还有持续改优化的空间。千万不要做一个爱Copy的孩子。

  相关的代码附件地址:【http://files.cnblogs.com/MartinChen999/webservice.rar】

  

转载于:https://www.cnblogs.com/MartinChen999/archive/2012/11/18/2775861.html

给一份Webservice接口通用实现!!相关推荐

  1. C#开发XML WebService接口(SOAP)

    using System; using System.Collections; using System.ComponentModel; using System.Data; using System ...

  2. [亲测可用]springBoot调用对方webService接口的几种方法示例

    目录 前言 一.需要用到的maven 二.如何调用webservice接口 调用方法一: 调用方法二: myEclipse生成的例子: idea生成的例子: 前言 平常我们开发调用接口一般会用到几种数 ...

  3. webservice接口与HTTP接口学习笔记

    一.webservice 的概念 Web 是使应用程序可以与平台和编程语言无关的方式进行相互通信的一项技术.Web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作 ...

  4. postman调用webservice接口_【分享】关于接口对前后端和测试的意义

    1.什么是接口? 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互. 2.接口都有哪些类型? ...

  5. postman调用webservice接口_接口对前后端和测试的意义

    1.什么是接口? 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互. 2.接口都有哪些类型? ...

  6. Webservice接口与HTTP接口学习笔记。

    一.webservice 的概念 Web 是使应用程序可以与平台和编程语言无关的方式进行相互通信的一项技术.Web 服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML 消息传递访问的操作 ...

  7. Webservice接口的生成及调用

    最近项目上要对接一个Webservice形式的接口,因为以前一直没有对接过这种类型的,所以这次专门查了一些资料学习下 一.Webservice的简单介绍 WebService是一种跨编程语言和跨操作系 ...

  8. webService接口对接医院lis系统接口

    文章目录 1.应用场景 2.http协议简述 3.webService协议/soup简述 4.发送webService请求 4.1建立HttpUtils工具类,来发送post请求 4.2 调用医院给的 ...

  9. webservice接口开发详解(附完整流程demo)

    摘要 由于公司对接第三方系统业务较多,所以就采用webservice进行对接,本文项目框架使用SSH搭建,其他框架也可以参考下具体使用流程,本文demo都是测试通过而且发布成功,有需要的可以直接cop ...

最新文章

  1. Laravel 集成 JPush 极光推送指北
  2. Activity的setResult方法
  3. python中的for语句涉及的序列可以是列表_Python中的列表与循环
  4. SPC5Studio 入门
  5. django-celery使用
  6. python web开发-flask访问请求数据request
  7. 优秀的功能测试也可以胜任技术测试者的工资
  8. 使TextView在Android上可滚动
  9. 【算法】排序_计数排序
  10. .net pdf转图片_如何将PDF转图片?PDF转图片免费方法!
  11. 微机原理与接口技术知识点整理
  12. java mina 服务端_mina 框架java服务端的搭建和通信。
  13. 聚宽macd底背离_MACD背离技术分析(图解)
  14. 破解百度云限速下载教程
  15. STM32产生固定频率和占空比可变的PWM
  16. 太阳能电池系统行业调研报告 - 市场现状分析与发展前景预测
  17. pd.DataFrame()快速筛选数据
  18. RealSense技术在SR300摄像头上的应用
  19. 波士顿房价预测的TensorFlow实现(多元线性回归)
  20. 2020牛客多校第八场E-Enigmatic Partition(隔项差分)

热门文章

  1. 笔记:Hadoop权威指南 第4章 Hadoop I/O
  2. JQuery实现Ajax跨域访问--Jsonp原理
  3. HDU 1241 Oil Deposits
  4. acwing算法题--不同的数
  5. OVS对VXLAN报文解封包
  6. move std 函数 示例_确保(值类型)可拷贝类有默认构造函数
  7. Using string literals in ref attributes is deprecated
  8. 【转】C++ Vector(向量容器)
  9. 中国电信在青岛率先商用NB-IoT 投入30亿推进信息化建设
  10. Jmeter接口测试进阶