![Web API接口設(shè)計經(jīng)驗總結(jié)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/954a637c-ebf4-4f09-8b06-1bcac915fe6c/954a637c-ebf4-4f09-8b06-1bcac915fe6c1.gif)
![Web API接口設(shè)計經(jīng)驗總結(jié)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/954a637c-ebf4-4f09-8b06-1bcac915fe6c/954a637c-ebf4-4f09-8b06-1bcac915fe6c2.gif)
![Web API接口設(shè)計經(jīng)驗總結(jié)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/954a637c-ebf4-4f09-8b06-1bcac915fe6c/954a637c-ebf4-4f09-8b06-1bcac915fe6c3.gif)
![Web API接口設(shè)計經(jīng)驗總結(jié)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/954a637c-ebf4-4f09-8b06-1bcac915fe6c/954a637c-ebf4-4f09-8b06-1bcac915fe6c4.gif)
![Web API接口設(shè)計經(jīng)驗總結(jié)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/954a637c-ebf4-4f09-8b06-1bcac915fe6c/954a637c-ebf4-4f09-8b06-1bcac915fe6c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Web API接口設(shè)計經(jīng)驗總結(jié)在Web API接口的開發(fā)過程中,我們可能會碰到各種各樣的問題,我在前面兩篇隨筆Web API應用架構(gòu)在Winform混合框架中的應用(1)、Web API應用架構(gòu)在Winform混合框架中的應用(2)-自定義異常結(jié)果的處理也進行了總的介紹,在經(jīng)過我的大量模塊實踐并成功運行后,總結(jié)了這篇隨筆,希望對大家有所幫助。1、在接口定義中確定MVC的GET或者POST方式由于我們整個Web API平臺是基于MVC的基礎(chǔ)上進行的API開發(fā),因此整個Web API的接口,在定義的時候,一般需要顯示來聲明接口是HttpGet或者HttpPost,雖然有些接口也可以不用聲明,但是避
2、免出現(xiàn)類似下面 的錯誤信息,顯式聲明還是有好處的。例如在基類定義的查找對象接口如下所示。1. /2. /查詢數(shù)據(jù)庫,檢查是否存在指定ID的對象3. /4. /對象的ID值5. /存在則返回指定的對象,否則返回Null6. HttpGet7. publicvirtualTFindByID(stringid,stringtoken)如果是增刪改的接口,一般需要聲明為POST方式提交數(shù)據(jù),而且基于安全性的考慮,需要攜帶更多的參數(shù)。1. /2. /插入指定對象到數(shù)據(jù)庫中3. /4. /指定的對象5. /執(zhí)行操作是否成功。6. HttpPost7. publicvirtualCommonResultIn
3、sert(Tinfo,stringtoken,stringsignature,stringtimestamp,stringnonce,stringappid)2、動態(tài)對象的接口定義在一般的Web API接口里面,我們可能都會碰到很多簡單類型的參數(shù),但是又想讓它們以POST方式提交數(shù)據(jù),那么我們就可以有兩種方法來處理,一種是定義一個類來放置 這些參數(shù),一種是采用動態(tài)的JObject參數(shù),前者有很多不方便的地方,因為我們不可能為每個接口參數(shù)定義多一個實體類,這樣可能會有很多難以管理的類 定義。如下面是微信API的調(diào)用接口案例,我們也需要設(shè)置這樣的處理規(guī)則。1. 接口調(diào)用請求說明2. http請求方
4、式:POST(請使用https協(xié)議)3. https:4. POST數(shù)據(jù)格式:json5. POST數(shù)據(jù)例子:group:id:108,name:test2_modify2那么我們采用JObject是這么樣的呢,我們來看接口的定義和處理代碼。JObject是Newtonsoft.Json.Linq命名空間下的一個對象。1. /2. /修改用戶密碼3. /4. /包含userName和userPassword的復合對象5. /用戶訪問令牌6. /7. HttpPost8. publicCommonResultModifyPassword(JObjectparam,stringtoken)9. 1
5、0. /令牌檢查,不通過則拋出異常11. CheckResultcheckResult=CheckToken(token);12. dynamicobj=param;13. if(obj!=null)14. 15. stringuserName=obj.userName;16. stringuserPassword=obj.userPassword;17. boolsuccess=BLLFactory.Instance.ModifyPassword(userName,userPassword);18. returnnewCommonResult(success);19. 20. else21.
6、 22. thrownewMyApiException(傳遞參數(shù)出現(xiàn)錯誤);23. 24. 其中我們把JObject對象轉(zhuǎn)換為我們所需要的對象的時候,因為我們沒有定義具體的實體類,因此采用了dynamic語法,聲明這是一個動態(tài)對象,由運行時獲取對應的屬性。dynamic obj = param;這樣我們就可以在調(diào)用的時候,動態(tài)POST對應的JSON對象給Web API接口,而不需要預先定義各種接口參數(shù)的類了。1. /2. /調(diào)用WebAPI接口,修改用戶密碼3. /4. /用戶名稱5. /修改的密碼6. /如果修改成功返回true,否則返回false7. publicboolModifyPas
7、sword(stringuserName,stringuserPassword)8. 9. varaction=ModifyPassword;10. varpostData=new11. 12. userName=userName,13. userPassword=userPassword14. .ToJson();15. stringurl=GetTokenUrl(action);16. CommonResultresult=JsonHelper.ConvertJson(url,postData);17. return(result!=null)?result.Success:false;1
8、8. 其中GetTokenUrl是根據(jù)token和API的地址等參數(shù),構(gòu)建一個完整的提交地址。我們在上面代碼通過 var postData = new userName = userName, userPassword = userPassword .ToJson();就可以動態(tài)創(chuàng)建一個對象,并生成它的JSON字符串,把數(shù)據(jù)POST提交到對應的API接口里面即可,然后對結(jié)果進行對象的轉(zhuǎn)換就算完成了。3、集合和分頁的處理在很多接口里面,我們都需要用到分頁的處理,Web API也不例外,這樣可以提交數(shù)據(jù)檢索效率,減少服務(wù)器數(shù)據(jù)處理的壓力,同時也提交客戶端的數(shù)據(jù)顯示速度。一般的集合接口定義如下所示(
9、通用性基類接口)。1. /2. /返回數(shù)據(jù)庫所有的對象集合3. /4. /指定對象的集合5. HttpGet6. publicvirtualListGetAll(stringtoken)7. 8. /檢查用戶是否有權(quán)限,否則拋出MyDenyAccessException異常9. base.CheckAuthorized(AuthorizeKey.ListKey,token);10. Listlist=baseBLL.GetAll();11. returnlist;12. 但是這樣的返回記錄會比較多,一般情況下需要分頁,那么分頁的處理接口定義如下所示。1. /2. /根據(jù)條件查詢數(shù)據(jù)庫,并返回對
10、象集合(用于分頁數(shù)據(jù)顯示)3. /4. /指定對象的集合5. HttpPost6. publicvirtualPagedListFindWithPager(stringcondition,PagerInfopagerInfo,stringtoken)分頁接口,在這里返回的結(jié)果里面,用了一個PageList的泛型類,這個方便我們獲取當前的記錄及總數(shù),它的定義如下所示。1. /2. /分頁集合3. /4. /對象5. publicclassPagedList6. 7. /8. /返回記錄的總數(shù)9. /10. publicinttotal_countget;set;11. /12. /列表集合13.
11、 /14. publicListlistget;set;15. 最后整個分頁的處理Web API接口實現(xiàn)如下所示。1. /2. /根據(jù)條件查詢數(shù)據(jù)庫,并返回對象集合(用于分頁數(shù)據(jù)顯示)3. /4. /指定對象的集合5. HttpPost6. publicvirtualPagedListFindWithPager(stringcondition,PagerInfopagerInfo,stringtoken)7. 8. /檢查用戶是否有權(quán)限,否則拋出MyDenyAccessException異常9. base.CheckAuthorized(AuthorizeKey.ListKey,token);
12、10. Listlist=baseBLL.FindWithPager(condition,pagerInfo);11. /構(gòu)造成Json的格式傳遞12. varresult=newPagedList()total_count=pagerInfo.RecordCount,list=list;13. returnresult;14. 最后客戶端調(diào)用分頁的Web API代碼如下所示。1. /2. /根據(jù)條件查詢數(shù)據(jù)庫,并返回對象集合(用于分頁數(shù)據(jù)顯示)3. /4. /查詢的條件5. /分頁實體6. /指定對象的集合7. publicvirtualListFindWithPager(stringcon
13、dition,refPagerInfopagerInfo)8. 9. varaction=FindWithPager;10. stringurl=GetTokenUrl(action)+string.Format(&condition=0,condition);11. varpostData=pagerInfo.ToJson();12. Listresult=newList();13. PagedListlist=JsonHelperPagedList.ConvertJson(url,postData);14. if(list!=null)15. 16. pagerInfo.RecordCou
14、nt=list.total_count;/修改總記錄數(shù)17. result=list.list;18. 19. returnresult;20. 4、混合框架界面整合Web API接口在整個Web API的平臺構(gòu)建以及在混合框架的整合過程中,我把各個模塊還是遵循相對獨立的方式進行開發(fā)和整合,它們實現(xiàn)了從直接訪問數(shù)據(jù)庫、以WCF服務(wù)獲取數(shù)據(jù),以及通過WebAPI調(diào)用方式獲取數(shù)據(jù)幾種方式的統(tǒng)一,從而實現(xiàn)了整個混合框架的高度整合。整個混合框架的核心是以相對獨立的方式,整合各個可重用的模塊,我們可以遵循一定的基礎(chǔ)上,快速構(gòu)建統(tǒng)一的應用平臺。搭建完畢的整個WebAPI平臺,其中包括了服務(wù)端內(nèi)容,以API控制器的方式,發(fā)布了對應的Web A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版九年級數(shù)學上冊21.2.4《因式分解法》聽評課記錄
- 人教版歷史八年級上冊(2017年新編)《第6課戊戌變法》(聽課評課記錄)
- 蘇科版數(shù)學八年級上冊聽評課記錄《4-3實數(shù)(1)》
- 新版華東師大版八年級數(shù)學下冊《18.1平行四邊形的性質(zhì)2》聽評課記錄
- 蘇科版數(shù)學七年級下冊聽評課記錄12.2證明1
- 人教版部編歷史七年級上冊《第12課 漢武帝鞏固大一統(tǒng)王朝》聽課評課記錄2
- 2022版新課標七年級上冊道德與法治第五課交友的智慧第二課時網(wǎng)上交友新時空聽課評課記錄
- 創(chuàng)業(yè)糕點店創(chuàng)業(yè)計劃書
- 專利技術(shù)許可證合同范本
- 廠房出租安全生產(chǎn)管理協(xié)議書范本
- 分享二手房中介公司的薪酬獎勵制度
- 安徽省2022年中考道德與法治真題試卷(含答案)
- GB 4793-2024測量、控制和實驗室用電氣設(shè)備安全技術(shù)規(guī)范
- 項目人員管理方案
- 重大火災隱患判定方法
- 挖掘機售后保養(yǎng)及維修服務(wù)協(xié)議(2024版)
- 2024年電工(高級技師)考前必刷必練題庫500題(含真題、必會題)
- 2024年全國各地中考語文試題匯編:名著閱讀
- 公司組織架構(gòu)與管理體系制度
- 2024-2030年中國涂碳箔行業(yè)現(xiàn)狀調(diào)查與投資策略分析研究報告
- 2024-2030年中國派對用品行業(yè)供需規(guī)模調(diào)研及發(fā)展趨勢預測研究報告
評論
0/150
提交評論