国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

轉(zhuǎn):WebService通用接口

2019-11-15 00:25:19
字體:
供稿:網(wǎng)友
轉(zhuǎn):WebService通用接口

看到許多中小項(xiàng)目的webservice接口的源代碼,不禁有個(gè)吐槽的沖動(dòng)。除了會(huì)用CXF,Axis2等神級(jí)框架,其他的懶得動(dòng)了,都是Ctrl+V,Ctrl+C,把其他模塊的Request,Response貼過來。一旦增加某個(gè)特性,不得不在所有Request,Response遨游一遍。早知今日,何必當(dāng)初呢。

寫一個(gè)好的Weservice Interface,關(guān)鍵是要多多總結(jié)。除了有Request,Response之外,還有很多。總結(jié)如下有:

Request:webservice的輸入。

Response:webservice輸出。

DataRsponse:帶結(jié)果集的webservice輸出。

ResultData:結(jié)果集,不同的interface,其ResultData不一樣。

ReslutInfo:描述調(diào)用請(qǐng)求成功或者失敗的對(duì)象。

WebServiceTemplate:模板類,定義如何調(diào)用下層函數(shù),如何處理異常錯(cuò)誤的流程

ResultDataCallback:回調(diào)類,與template配合,適用【返回結(jié)果集】操作,比如【獲取用戶信息】,【下訂單】

ResultCallback:回調(diào)類,與Template配置,適用于【不返回帶結(jié)果集的接口,比如【修改用戶名】

ResponseFactory:用來組裝 webservice消息 的工廠類。

ResultInfoFactory:用來處理異常信息的 工廠類,這個(gè)一個(gè)接口,為它實(shí)現(xiàn)一個(gè)默認(rèn)實(shí)例吧。

有了這些小弟們,任何webservice接口的定義都能輕易搞定,不信我舉個(gè)例子給你,咱們以【加法】為例!

AddRequest:

復(fù)制代碼

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;    }    }

復(fù)制代碼

AddResonse:

復(fù)制代碼

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

復(fù)制代碼

AddResultData:

復(fù)制代碼

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;    }}

復(fù)制代碼

一個(gè)簡(jiǎn)單的webservice接口:

復(fù)制代碼

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();            }        });    }}

復(fù)制代碼

一個(gè)簡(jiǎn)單的TestCase測(cè)試:

復(fù)制代碼

public class TestSoap {        @Test    public 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());    }}

復(fù)制代碼

雖然這些很簡(jiǎn)單,但是能夠解決80%的問題。剩下20%還要根據(jù)實(shí)際情況來定。況且,這些代碼在你的手中還有持續(xù)改優(yōu)化的空間。千萬不要做一個(gè)愛Copy的孩子。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 玉环县| 合川市| 丹棱县| 东至县| 商丘市| 德化县| 阳江市| 汉阴县| 德钦县| 连江县| 台北市| 彩票| 阿荣旗| 大英县| 韶关市| 石狮市| 班戈县| 隆德县| 苏尼特左旗| 富民县| 时尚| 晋江市| 黎川县| 五指山市| 武安市| 鄂尔多斯市| 周口市| 浏阳市| 临高县| 即墨市| 鄄城县| 巴林左旗| 肇源县| 莫力| 陆河县| 家居| 探索| 基隆市| 宁河县| 高青县| 定襄县|