当前位置: 首页 > 后端技术 > Java

3行代码写出8个接口,牛逼!!这也行??

时间:2023-04-01 22:46:03 Java

来源:my.oschina.net/tommylemon/blog/1574430一定有很多人在想:??这怎么可能?即使是几乎零配置的SpringBoot,写出最简单的界面也需要3行代码!@RequestMapping("test/{request}")publicStringtest(@PathVariableStringrequest){returnrequest+":HelloWorld";}推荐一个SpringBoot基础教程和实例:https://github.com/javastacks...这是8个无用的HelloWorld接口的24行代码!这还不算SQL连接JDBC或者调用ORM库的代码!更不用说为XML配置编写其他库了!没错,以传统的方式。获取用户:base_url/get/user获取用户列表:base_url/get/user/list获取评论:base_url/get/comment获取评论列表:base_url/get/comment/list...只是一个查询,一张A表(对应客户端的型号)需要两个接口。如果加增删改,批量修改批量删除,加统计,那必须有8个接口!那我是怎么解决的呢?同类型请求只使用一个接口:addbase_url/postdelete(含batch)base_url/deletechange(含batch)base_url/putquery(含list)base_url/getstatisticsbase_url/head使用最常用的query请求示例:获取用户:base_url/get/获取用户列表:base_url/get/获取评论:base_url/get获取评论列表:base_url/get...都使用相同的接口!我是怎么做到的?APIJSON,没错,就是它!我们使用API??JSON操作一个表,比如用户表User,写3行代码就可以了://注册和添加权限,使用默认配置@MethodAccesspublicclassUser{//内容一般只针对table字段说明和AndroidApp开发使用,服务器不用的情况下不写。}//在Verifier中添加权限accessMap.put(User.class.getSimpleName(),getAccessMap(User.class.getAnnotation(MethodAccess.class)));或者可以自定义POST请求的角色权限:@MethodAccess(POST={UNKNOWN,ADMIN}//只允许未登录角色和管理员角色的新用户,默认配置为{LOGIN,ADMIN})publicclassUser{}and然后运行Server项目请求:URL:http://apijson.cn:8080/getform:{"User":{"id":82001}}return:{"User":{"id":82001,"sex":0,"name":"Test","tag":"APIJSONUser","head":"http://static.oschina.net/uploads/user/19/39085_50.jpg","contactIdList":[82004,82021,70793],"pictureList":["http://common.cnblogs.com/images/icon_weibo_24.png"],"date":"2017-02-0119:21:50.0"},"code":200,"msg":"success"}上面只是查了一个User,如果我们要查女性用户的列表,可以这样做:URL:http://apijson.cn:8080/getform:{"[]":{//数组"User":{"sex":1,//性别为女性"@column":"id,name"//只需要id,name这两个字段}}}返回:{"[]":[{"User":{"id":82002,"name":"Happy~"}},{"User":{"id":82003,"name":"Wechat"}},{"User":{"id":82005,"name":"Jan"}}],"code":200,"msg":"success"}User是吧包裹在额外的一层?将数组命名为User[]以将其删除:Form:{"User[]":{//ExtractUser"User":{"sex":1,//Sexisfemale"@column":"id,name"//只需要id和name这两个字段}}return:{"User[]":[{"id":82002,"name":"Happy~"},{"id":82003,"name":"Wechat"},{"id":82005,"name":"Jan"}],"code":200,"msg":"success"}要进一步提取姓名吗?User-name[]满足你:Form:{"User-name[]":{//提取User.name"User":{"sex":1,//Sex别当女生"@column":"name"//只需要name字段}}}return:{"User-name[]":["Happy~","Wechat","Jan","Meria","Tommy"],"code":200,"msg":"success"}但是如果是关联多个表的数组,不要去掉:form:{"[]":{"Comment":{},//评论"User":{//发表评论的用户"id@":"/Comment/userId"//User.id=Comment.userId}}}Return:{"[]":[{“评论”:{“id”:3,“toId”:0,“userId”:82002,“momentId”:15,“date”:“2017-02-0119:20:50.0”,“content":"ThisisaContent...-3"},"User":{"id":82002,"sex":1,"name":"Happy~","tag":"iOS","head":"http://static.oschina.net/uploads/user/1174/2348263_50.png?t=1439773471000","contactIdList":[82005,82001,38710],"pictureList":[],"date":"2017-02-0119:21:50.0"}},{"评论":{"id":4,"toId":0,"userId":38710,"momentId":470,"date":"2017-02-0119:20:50.0","content":"ThisisaContent...-4"},"User":{"id":38710,"sex":0,"name":"TommyLemon","tag":"Android&Java","head":"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000","contactIdList":[82003,82005],"pictureList":["http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000","http://common.cnblogs.com/images/icon_weibo_24.png"],"date":"2017-02-0119:21:50.0"}}],"code":200,"msg":"success"}和动态点赞用户list:{"Moment":{},"User[]":{"User":{"id{}@":"Moment/praiseUserIdList"//id在表扬列表中praiseUserIdList}}}类似微信个人datainterface:{"User":{},"Moment[]":{//瞬间照片列表"Moment":{"@order":"date-",//按照发布日期倒序排列"userId@":"User/id"}}}类似微信朋友圈动态列表:{"[]":{"count":3,//只需要3"page":2,//要第二页"时刻":{},"用户":{"id@":"/Moment/userId"},"评论[]":{"评论":{"momentId@":"[]/时刻/id"}}}}...任意结构,任意内容,任意组合,任意JSON结构,字段内容,表关联组合查询均可完全自定义!"key[]":{}//查询数组"key{}":[1,2,3]//匹配选项范围"key{}":"<=10,length(key)>1..."//匹配条件范围"key()":"function(arg0,arg1...)"//远程调用函数"key@":"key0/key1.../targetKey"//参考赋值"key$":"%abc%"//模糊搜索"key?":"^[0-9]+$"//正则匹配"key+":[1]//增加/扩展"key-":888.88//减少/删除"name:alias"//创建新别名"@column":"id,sex,name"//返回字段"@group":"userId"//分组方法"@having":"max(id)>=100"//聚合函数"@order":"date-,name+"//以上排序方式均为查询请求,尝试增删改查统计:add:http://apijson.cn:8080/post{"Comment":{"userId":82001,"momentId":15,"content":"新评论测试"},"tag":"Comment"}删除:http:///apijson.cn:8080/delete{"Comment":{"id":1510394480987},"tag":"Comment"}更改:http://apijson.cn:8080/put{"评论":{"id":22,"内容":"测试修改评论"},"tag":"评论"}批量删除:http://apijson.cn:8080/delete{"Comment":{"id{}":[1510394480987,1510394804925]},"tag":"Comment[]"}批量修改:http://apijson.cn:8080/put{"Comment":{"id{}":[22,114],"content":"测试批量编辑评论"},"tag":"Comment[]"}统计:http://apijson.cn:8080/head{"comment":{"content$":"%test%"//内容包含test两个字}}写操作需要相应的权限,配置3行代码,请求报错:登录后,角色自动变为LOGIN(可以通过@role自定义),符合Comment的POST权限配置,成功:回想一下只写了3行代码,实现了增删改查8个接口和实现了这么多种类的查询!其实APIJSON根本不需要写接口!这3行代码其实就是权限管理!对于个人博客和非商业新闻网站,无需权限即可控制,更改全局配置,不做权限验证,一行代码都不用写!!!近期热点文章推荐:1.1,000+Java面试题及答案(2021最新版)2.别在满屏的if/else中,试试策略模式,真的很好吃!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.5发布,深色模式太炸了!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!

猜你喜欢