精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

極簡的Restful框架推薦推薦:Resty(服務端+客戶端)

開發 前端
resty一款極簡的restful輕量級的web框架,擁有jfinal/activejdbc一樣的activerecord的簡潔設計,使用更簡單的restful框架。

擁有jfinal/activejdbc一樣的activerecord的簡潔設計,使用更簡單的restful框架。

restful的api設計,是作為restful的服務端***選擇(使用場景:客戶端和服務端解藕,用于對靜態的html客戶端(mvvm等),ios,andriod等提供服務端的api接口)

一、獨有優點:

1.極簡的route設計:

  1.   @GET("/users/:name")  //在路徑中自定義解析的參數 如果有其他符合 也可以用 /users/{name}  
  2. // 參數名就是方法變量名  除路徑參數之外的參數也可以放在方法參數里  傳遞方式 user={json字符串}  
  3. public Map find(String name,User user) {  
  4.   // return Lister.of(name);  
  5.   return Maper.of("k1""v1,name:" + name, "k2""v2");//返回什么數據直接return,完全融入普通方法的方式  

2.極簡的activerecord設計,數據操作只需短短的一行 ,支持批量保存對象

 

 

  1. //批量保存  
  2. User u1 = new User().set("username""test").set("providername""test").set("password""123456");  
  3. User u2 = new User().set("username""test").set("providername""test").set("password""123456");  
  4. User.dao.save(u1,u2);  
  5.    
  6. //普通保存  
  7. User u = new User().set("username""test").set("providername""test").set("password""123456");  
  8. u.save();  
  9.    
  10. //更新  
  11. u.update();  
  12. //條件更新  
  13. User.dao.updateBy(where,paras);  
  14. User.dao.updateAll(columns,where,paras);  
  15.    
  16. //刪除  
  17. u.deleted();  
  18. //條件刪除  
  19. User.dao.deleteBy(where,paras);  
  20. User.dao.deleteAll();  
  21.    
  22. //查詢  
  23. User.dao.findById(id);  
  24. User.dao.findBy(where,paras);  
  25. User.dao.findAll();  
  26.    
  27. //分頁  
  28. User.dao.paginateBy(pageNumber,pageSize,where,paras);  
  29. User.dao.paginateAll(pageNumber,pageSize); 

3.極簡的客戶端設計,支持各種請求,文件上傳和文件下載(支持斷點續傳)

 

  1. Client client=null;//創建客戶端對象  
  2. //啟動resty-example項目,即可測試客戶端  
  3. String apiUrl = "http://localhost:8081/api/v1.0";  
  4. //如果不需要 使用賬號登陸  
  5. //client = new Client(apiUrl);  
  6. //如果有賬號權限限制  需要登陸  
  7. client = new Client(apiUrl, "/tests/login""u""123");  
  8.    
  9. //該請求必須  登陸之后才能訪問  未登錄時返回 401  未認證  
  10. ClientRequest authRequest = new ClientRequest("/users", HttpMethod.GET);  
  11. ResponseData authResult = client.build(authRequest).ask();  
  12. System.out.println(authResult.getData());  
  13.    
  14. //get  
  15. ClientRequest getRequest = new ClientRequest("/tests", HttpMethod.GET);  
  16. ResponseData getResult = client.build(getRequest).ask();  
  17. System.out.println(getResult.getData());  
  18.    
  19. //post  
  20. ClientRequest postRequest = new ClientRequest("/tests", HttpMethod.POST);  
  21. postRequest.addParameter("test", Jsoner.toJSONString(Maper.of("a""諤諤")));  
  22. ResponseData postResult = client.build(postRequest).ask();  
  23. System.out.println(postResult.getData());  
  24.    
  25. //put  
  26. ClientRequest putRequest = new ClientRequest("/tests/x", HttpMethod.PUT);  
  27. ResponseData putResult = client.build(putRequest).ask();  
  28. System.out.println(putResult.getData());  
  29.    
  30.    
  31. //delete  
  32. ClientRequest deleteRequest = new ClientRequest("/tests/a", HttpMethod.DELETE);  
  33. ResponseData deleteResult = client.build(deleteRequest).ask();  
  34. System.out.println(deleteResult.getData());  
  35.    
  36.    
  37. //upload  
  38. ClientRequest uploadRequest = new ClientRequest("/tests/resty", HttpMethod.POST);  
  39. uploadRequest.addUploadFiles("resty", ClientTest.class.getResource("/resty.jar").getFile());  
  40. uploadRequest.addParameter("des""test file  paras  測試筆");  
  41. ResponseData uploadResult = client.build(uploadRequest).ask();  
  42. System.out.println(uploadResult.getData());  
  43.    
  44.    
  45. //download  支持斷點續傳  
  46. ClientRequest downloadRequest = new ClientRequest("/tests/file", HttpMethod.GET);  
  47. downloadRequest.setDownloadFile(ClientTest.class.getResource("/resty.jar").getFile().replace(".jar""x.jar"));  
  48. ResponseData downloadResult = client.build(downloadRequest).ask();  
  49. System.out.println(downloadResult.getData()); 

4.支持多數據源和嵌套事務(使用場景:需要訪問多個數據庫的應用,或者作為公司內部的數據中間件向客戶端提供數據訪問api等)5.極簡的權限設計,你只需要實現一個簡單接口和添加一個攔截器,即可實現基于url的權限設計

  1. // 在resource里使用事務,也就是controller里,rest的世界認為所以的請求都表示資源,所以這兒叫resource  
  2. @GET("/users")  
  3. @Transaction(name = {DS.DEFAULT_DS_NAME, "demo"}) //多數據源的事務,如果你只有一個數據庫  直接@Transaction 不需要參數  
  4. public User transaction() {  
  5. //TODO 用model執行數據庫的操作  只要有操作拋出異常  兩個數據源 都會回滾  雖然不是分布式事務  也能保證代碼塊的數據執行安全  
  6. }  
  7.    
  8. // 如果你需要在service里實現事務,通過java動態代理(必須使用接口,jdk設計就是這樣)  
  9. public interface UserService {  
  10.   @Transaction(name = {DS.DEFAULT_DS_NAME, "demo"})//service里添加多數據源的事務,如果你只有一個數據庫  直接@Transaction 不需要參數  
  11.   public User save(User u);  
  12. }  
  13. // 在resource里使用service層的 事務  
  14. // @Transaction(name = {DS.DEFAULT_DS_NAME, "demo"})的注解需要寫在service的接口上  
  15. // 注意java的自動代理必須存在接口  
  16. // TransactionAspect 是事務切面 ,你也可以實現自己的切面比如日志的Aspect,實現Aspect接口  
  17. // 再private UserService userService = AspectFactory.newInstance(new UserServiceImpl(), new TransactionAspect(),new LogAspect());  
  18. private UserService userService = AspectFactory.newInstance(new UserServiceImpl(), new TransactionAspect()); 

5.極簡的權限設計,你只需要實現一個簡單接口和添加一個攔截器,即可實現基于url的權限設計

  1. public void configInterceptor(InterceptorLoader interceptorLoader) {  //權限攔截器 放在***位 ***時間判斷 避免執行不必要的代碼  
  2.   interceptorLoader.add(new SecurityInterceptor(new MyAuthenticateService()));  
  3. }  
  4. //實現接口  
  5. public class MyAuthenticateService implements AuthenticateService {    
  6. //登陸時 通過name獲取用戶的密碼和權限信息  
  7.   public Principal findByName(String name) {  
  8.     DefaultPasswordService defaultPasswordService = new DefaultPasswordService();  
  9.    
  10.     Principal principal = new Principal(name, defaultPasswordService.hash("123"), new HashSet<String>() {{  
  11.       add("api");  
  12.     }});      
  13.     return principal;  
  14.   }    
  15.   //基礎的權限總表  所以的url權限都放在這兒  你可以通過 文件或者數據庫或者直接代碼 來設置所有權限  
  16.   public Set<Permission> loadAllPermissions() {  
  17.     Set<Permission> permissions = new HashSet<Permission>();  
  18.     permissions.add(new Permission("GET""/api/transactions**""api"));      
  19.     return permissions;  
  20.   }  

6.極簡的緩存設計,可擴展,非常簡單即可啟用model的自動緩存功能7.下載文件,只需要直接return file

  1. public void configConstant(ConstantLoader constantLoader) {  
  2.   //啟用緩存并在要自動使用緩存的model上  開啟緩存@Table(name = "sec_user", cached = true)  
  3.   constantLoader.setCacheEnable(true);  
  4. }  
  5.    
  6. @Table(name = "sec_user", cached = true)  
  7. public class User extends Model<User> {  
  8.   public static User dao = new User();  
  9.    

 

7.下載文件,只需要直接return file

  1. @GET("/files")  
  2. public File file() {  
  3.   return new File(path);  

8.上傳文件,通過getFiles,getFile把文件寫到服務器

  1. @POST("/files")  
  2. public UploadedFile file() {  
  3.   //Hashtable<String, UploadedFile> uploadedFiles=getFiles();  
  4.   return getFile(name);  

9.當然也是支持傳統的web開發,你可以自己實現數據解析,在config里添加自定義的解析模板

  1. public void configConstant(ConstantLoader constantLoader) {  
  2.   // 通過后綴來返回不同的數據類型  你可以自定義自己的  render  如:FreemarkerRender  
  3.   // constantLoader.addRender("json", new JsonRender());  
  4.   //默認已添加json和text的支持,只需要把自定義的Render add即可  

二、運行example示例:

1.運行根目錄下的pom.xml->install (把相關的插件安裝到本地,功能完善之后發布到maven就不需要這樣了)

2.在本地mysql數據庫里創建demo,example數據庫,對應application.properties的數據庫配置

3.運行resty-example下的pom.xml->flyway-maven-plugin:migration,自動根具resources下db目錄下的數據庫文件生成數據庫表結構

4.運行resty-example下的pom.xml->tomcat7-maven-plugin:run,啟動example程序

提醒:推薦idea作為開發ide,使用分模塊的多module開發。

源碼鏈接:OSC -> Resty   Github -> Resty

本文出自:http://my.oschina.net/wangrenhui1990/blog/365310

責任編輯:林師授 來源: 王仁輝的博客
相關推薦

2021-10-18 05:00:38

語言GoRequestHTTP

2021-05-25 08:20:37

編程技能開發

2009-08-21 15:59:22

服務端與客戶端通信

2009-08-21 16:14:52

服務端與客戶端通信

2011-09-09 09:44:23

WCF

2021-08-01 23:18:21

Redis Golang命令

2024-03-06 14:58:52

客戶端微服務架構

2014-12-22 11:04:30

Windows AzuiPhone虛擬機

2010-11-19 14:22:04

oracle服務端

2023-03-06 08:01:56

MySQLCtrl + C

2010-03-18 17:47:07

Java 多客戶端通信

2009-08-21 15:54:40

服務端與客戶端

2009-08-21 15:36:41

服務端與客戶端

2019-07-05 17:00:33

Redis數據庫可視化管理

2015-08-26 17:31:03

UbuntuBT客戶端

2011-05-18 09:56:31

UbuntuLinux客戶端

2023-04-03 08:13:05

MySQLCtrl + C

2012-11-28 11:05:42

IBMdW

2022-08-09 07:32:03

MySQLWindowsLinux

2010-06-01 13:19:04

點贊
收藏

51CTO技術棧公眾號

麻豆成人久久精品二区三区小说| 四虎5151久久欧美毛片| 亚洲视频在线观看三级| 99精品在线直播| 国产毛片aaa| 日本道不卡免费一区| 日韩免费看网站| 天天摸天天碰天天添| 黄色免费在线网站| www久久精品| 亚洲aⅴ日韩av电影在线观看| 日产电影一区二区三区| 久久人体视频| 日韩电影第一页| 一级片黄色免费| 都市激情综合| 亚洲午夜一二三区视频| 日本在线观看不卡| 人妻精品一区二区三区| 六月丁香婷婷久久| 91tv亚洲精品香蕉国产一区7ujn| 韩国一级黄色录像| 深爱激情综合网| 亚洲精品一线二线三线无人区| 九九热免费精品视频| 波多野结衣久久| 亚洲欧美偷拍另类a∨色屁股| 免费毛片一区二区三区久久久| 国产suv一区二区| 免费观看成人av| 欧美一级视频在线观看| 久久久久久天堂| 99久久影视| 在线播放日韩精品| 国产男女猛烈无遮挡a片漫画 | 黑人巨大精品欧美一区二区三区| www亚洲国产| av在线女优影院| 久久久美女艺术照精彩视频福利播放| 国产精品一区二区三区在线观 | 国产成人精品亚洲男人的天堂| 久久精品国内一区二区三区水蜜桃| 亚洲精品中文字幕av| 稀缺小u女呦精品呦| av成人资源| 日韩一区二区三| 一二三级黄色片| 青娱乐极品盛宴一区二区| 欧洲精品一区二区| 好男人www社区| 日韩视频网站在线观看| 日本乱码高清不卡字幕| 免费黄色特级片| 免费亚洲电影| 色94色欧美sute亚洲线路一ni| 激情六月丁香婷婷| 手机看片久久| 欧美亚洲禁片免费| 日韩一级免费片| 亚洲黑人在线| 日韩一级大片在线观看| 樱花草www在线| 日韩欧美久久| 亚洲国产成人精品久久久国产成人一区| 午夜视频在线免费看| 免费欧美网站| 精品国产乱码久久久久久1区2区 | 中文字幕有码av| 欧美视频在线视频精品| 制服丝袜亚洲播放| 中文字幕第10页| 久久男人av| 亚洲人成电影网站色| 老司机精品免费视频| 亚洲h色精品| 欧美激情视频播放| 精品不卡一区二区| 美女国产一区二区| 2022国产精品| 午夜性色福利影院| 欧美韩日一区二区三区四区| 亚洲第一页在线视频| 青青在线视频| 日韩欧美中文在线| 婷婷免费在线观看| 亚洲小说春色综合另类电影| 亚洲精品一二区| 操她视频在线观看| 在线不卡亚洲| 国产成人自拍视频在线观看| 99国产精品欲| 久久精品久久99| 美女视频亚洲色图| 中文字幕在线观看亚洲| 久久久久97国产| 香蕉精品999视频一区二区 | 好吊妞视频这里有精品| 亚洲色图第三页| 欧美激情图片小说| 久久精选视频| 999视频在线免费观看| 男人的天堂在线视频| 亚洲丝袜制服诱惑| 色婷婷综合久久久久中文字幕 | 日本在线播放一二三区| 欧美色区777第一页| 日本50路肥熟bbw| 97国产精品| 日本韩国在线不卡| 国产黄色一级大片| 国产精品丝袜一区| 日韩av一二三四区| 亚洲一区二区免费在线观看| 中文字幕av一区二区| 国产一级二级毛片| 久久97超碰色| 欧美日韩一区二区三区免费| 最新av在线播放| 欧美亚洲一区二区在线| 亚洲精品理论片| 欧美日韩三级| 91久久精品久久国产性色也91| 青青操在线视频| 亚洲动漫第一页| 波多野结衣在线免费观看| 国内精品视频在线观看| 992tv在线成人免费观看| 性一交一乱一精一晶| 国产精品久久久久久久久久久免费看 | www.成人影院| 亚洲国产成人精品久久| 麻豆一区产品精品蜜桃的特点| 美女久久久精品| 日韩精品电影网站| **在线精品| 精品亚洲一区二区三区在线播放 | 久久国产成人| 黑人巨大精品欧美一区二区小视频 | 四虎884aa成人精品最新| 久久久久久久999| 成人激情四射网| 亚洲精品伦理在线| 自拍偷拍激情视频| 欧美精选一区| www.一区二区三区| 国产丝袜在线观看视频| 日韩精品一区二区三区蜜臀 | av国产在线观看| 欧美性猛交xxxxxxxx| 黄免费在线观看| 日韩高清中文字幕一区| 台湾成人av| 欧美啪啪网站| 欧美成人午夜激情视频| 亚洲国产综合网| 亚洲午夜羞羞片| 亚洲观看黄色网| 性久久久久久| 欧美在线激情| 日韩免费大片| 欧美伦理91i| 污污网站在线免费观看| 色综合久久综合网欧美综合网| 中文字幕第4页| 奇米色一区二区三区四区| 亚洲一区二区自拍偷拍| 玖玖玖电影综合影院| 久久免费观看视频| 三级理论午夜在线观看| 欧美四级电影网| 懂色av懂色av粉嫩av| av毛片久久久久**hd| 777米奇影视第四色| 日韩欧美大片| av色综合网| 欧美三区四区| 色综合91久久精品中文字幕| 三级毛片在线免费看| 欧美日韩国产另类一区| 久久久久成人片免费观看蜜芽| 99久久er热在这里只有精品15| 尤蜜粉嫩av国产一区二区三区| 97视频热人人精品免费| 国产综合第一页| 久久电影天堂| 久久人人爽人人爽人人片av高请| 免费一级毛片在线观看| 欧美福利视频导航| 国产超碰人人爽人人做人人爱| 中文字幕精品在线不卡| 中文字幕制服丝袜| 日日夜夜免费精品视频| 男人天堂新网址| 国产探花在线精品一区二区| 亚洲精品免费网站| 亚洲一区站长工具| 久久久久999| 久久经典视频| 欧美大胆人体bbbb| 精品乱码一区内射人妻无码| 一区二区三区四区不卡视频| 自拍偷拍中文字幕| 国产不卡在线播放| 欧美精品性生活| 香蕉av777xxx色综合一区| 国产又粗又长又爽视频| 欧美伦理影院| 极品日韩久久| 日韩一区二区三区精品| 国产伊人精品在线| 国产精品一区二区av影院萌芽| 欧美成人午夜激情视频| 91视频在线观看| 亚洲美女免费精品视频在线观看| 精品国产18久久久久久| 欧美日韩另类国产亚洲欧美一级| 日韩成人免费观看| 亚洲综合在线第一页| 自拍偷拍第9页| 日本一区二区免费在线观看视频| 女同性恋一区二区三区| 国产不卡视频在线观看| 青娱乐精品在线| 免费观看在线色综合| 男人的天堂99| 亚洲欧美成人综合| 91av资源网| 精品999日本| 日韩在线视频在线| 一区二区三区国产精华| 中文字幕一区二区三区5566| 精品久久中文| 亚欧洲精品在线视频免费观看| 一区二区三区视频免费观看| 精品一区久久久| 欧美三级午夜理伦三级小说| 国产精品裸体一区二区三区| 97一区二区国产好的精华液| 亚洲综合视频1区| 精品91福利视频| 亚洲在线免费看| av男人一区| 加勒比av一区二区| 国产九九精品视频| h1515四虎成人| 国产精品美女主播在线观看纯欲| 高清成人在线| 国产精品天天狠天天看| 四虎国产精品永久在线国在线 | 久久久国产精品免费| 免费在线午夜视频| 久久综合九色九九| 日本性爱视频在线观看| 久久人人97超碰精品888| 三级中文字幕在线观看| 欧美一区深夜视频| 四虎4545www精品视频| 国产精品久久视频| 成人黄色理论片| 97视频资源在线观看| 久久精品66| 欧美日韩综合精品| 成人aaaa| 国产欧美综合一区| 欧美日韩国内| 黑人糟蹋人妻hd中文字幕| 狂野欧美一区| 中文字幕久久av| 粉嫩一区二区三区性色av| 中文字幕a在线观看| 久久综合一区二区| 欧美乱大交做爰xxxⅹ小说| 亚洲男女毛片无遮挡| 日本少妇激情舌吻| 欧美性感一区二区三区| 国内老熟妇对白hdxxxx| 日韩激情在线视频| 日本中文字幕在线视频| 久久99精品久久久久久青青91| 男人久久天堂| 国产欧美日韩精品专区| 亚洲国产aⅴ精品一区二区| 精品一区国产| 中文字幕人成人乱码| 成人免费视频91| 免费观看一级特黄欧美大片| 亚洲少妇一区二区三区| 国产日韩精品一区| 免费在线一级片| 欧美性xxxx18| 精品国产免费无码久久久| 亚洲免费一在线| av片在线观看| 国产精品高精视频免费| 午夜久久av| 亚洲日本精品| 亚洲精品乱码久久久久久蜜桃麻豆| 天天色综合天天色| 波多野结衣亚洲一区| 手机免费观看av| 精品久久久久久久久中文字幕| 国产一区二区在线不卡| 亚洲精品成人av| 顶级网黄在线播放| 国产精品福利网站| 国产精品流白浆在线观看| a级黄色片网站| 日韩电影一二三区| 麻豆精品国产传媒av| 亚洲欧美韩国综合色| 国产性生活视频| 亚洲激情视频网| 在线观看男女av免费网址| 国产精品丝袜视频| 久久99国产精一区二区三区| 久久99久久99精品| 国产一区二区不卡| 亚洲女同二女同志奶水| 色成年激情久久综合| 香港一级纯黄大片| 中文字幕在线观看一区二区| 青娱乐一区二区| 伊人久久大香线| 天堂一区在线观看| 久久精品视频免费观看| 黄网在线观看视频| 亚洲第一视频网| 免费在线国产视频| av成人综合网| 欧美69视频| www激情五月| 亚洲欧美偷拍另类a∨色屁股| 一级特黄特色的免费大片视频| 国产一级揄自揄精品视频| 成人影院网站| 日韩aⅴ视频一区二区三区| 另类av一区二区| 国产人妻一区二区| 欧美性猛交xxxx免费看漫画 | 久久亚洲人体| 亚洲国产精品久久久久婷婷老年 | 欧美色老头old∨ideo| av在线电影观看| 国产精品欧美久久久| 成人写真视频| 四季av一区二区三区| 成人免费在线视频| 国产视频在线观看免费| 久久国产精品久久精品| 日韩综合一区二区三区| 国产av熟女一区二区三区| 国产 欧美在线| 91精品国产高潮对白| 亚洲国产欧美日韩精品| 九色porny自拍视频在线播放| 精品国产一区二区三区麻豆免费观看完整版| 一区在线播放| 三上悠亚影音先锋| 欧美撒尿777hd撒尿| 国产精品实拍| 国产精品久久九九| 国产精品三上| 国产黄色片在线| 日韩一区二区三区在线观看| 波多野结衣乳巨码无在线观看| 久久久一本精品99久久精品66| 老**午夜毛片一区二区三区| 欧日韩不卡视频| 欧美va在线播放| 中文不卡1区2区3区| 亚州欧美一区三区三区在线| 国产精品自拍毛片| 偷偷操不一样的久久| 中文字幕亚洲欧美一区二区三区 | 久久国产日韩| 特黄一区二区三区| 亚洲成人激情在线| 69堂精品视频在线播放| 欧美与动交zoz0z| 99久久精品一区二区| 中文字幕第99页| 久久久免费在线观看| 加勒比久久综合| 丰满饥渴老女人hd| 91久久精品国产91性色tv| 国产在线激情| 噜噜噜噜噜久久久久久91| 久久精品国产99国产| 日韩欧美大片在线观看| 最新国产精品亚洲| 国产精品17p| 激情黄色小视频| 欧美日韩激情美女| a级片国产精品自在拍在线播放| 久久伦理网站| 国产精品自产自拍| 亚洲视频在线观看一区二区| 91精品国产91久久久久福利| 99精品美女| 精品国产av无码|