RuleApi二次开发入门教程,从修改到打包

本文阅读 12 分钟
广告

这篇文章只讲述RuleApi如何进行简单的二次开发,并且在阅读前,请先在心理不断的强调一点,那就是这些东西没有什么难度,大多数甚至变通程度不如小学数学题,很多时候总是把简单的事情想成很困难是不好的。所以,在这篇文章,我会简单的讲解RuleApi代码的目录结构,如何创建新接口,如何修改旧接口,如何创建新数据库字段,如何让数据库语句可以执行。

虽然说不需要懂太多,但是编程的基本思想要有,比如知道什么是接口,什么是参数,什么是数据库,如果这里不知道,那么这篇文章就没有看下去的意义了。

如果是二次开发进行商业售卖,请申明基于RuleApi。开源不易,如果你觉得好用的话,可以通过下方链接赞助。

赞助开发者

提示

我已经在语雀补充了更加详细的文档,建议前往阅读:RuleProject社区应用帮助文档

注意

1.虽然RuleApi是通过Java语言的Springboot框架开发,但是不等于要学会java,甚至根本用不到什么java知识,全程都可以复制粘贴,简单修改。

2.我的代码是属于一边学一边做,可能有很大的优化空间,如果技术好点的情况下,可以自己发挥能力大改。

3.每次修改完都需要重启才生效,这里和php或者前端都是不一样的。

4.JAVA属于强类型语言,所以各种类型需要做好申明,类型有时候也需要转换,但是百度有一大堆教程。

前期准备:

请根据如下教程,跳过代码的部分,只看安装基本环境部分,安装好JAVA环境,Redis还有一堆文章内提供的工具,包括IDEA。其它的代码啊,java教程啥的,就别看了,和他们无关。
Springboot半小时入门教程,代码加案例,新手摸坑大全

目录结构

如下图所示,通过IDEA导入项目,打开项目的src/main/java就可以看到代码目录了。最重要的文件夹是web,放入了所有接口和主要逻辑,其次就是common文件夹放的公共方法,然后就是mapper里面的xml形式的数据库语句,和static里面的接口网页和可视化配置中心。
1.png

IDEA基本操作

1.启动项项目:导入项目后,开启本地的各类环境,如Redis和Mysql之后,可点击如下图所示的方法启动项目。打开后可通过127.0.0.1:8081访问,如果要改端口,可以打开resources目录下的application.properties文件。

2.png

2.修改完后打包项目:在右边可以看到竖起来的Maven,点击后如下图所示,双击package即可开始打包,打包的jar文件会出现在/RuleApi/target目录,这时候只需要把这个jar文件修改名称,替换你服务器opt目录下的jar文件,就可以运行重启指令,开始你的二开版本了。
3.png
4.png

2.修复错误:如果你的项目出现问题,最常见的就是代码错误,或者多了标点符号,这个时候将无法打包,但是IDEA会准确的告诉你在哪个文件和哪一行以及具体位置,这时就需要你自己找到修复。
5.png

修改旧接口

如果你需要对已有的接口进行修改,那么可以首先看接口的路径,比如/typechoUsers/userInfo。因为所有的接口都在web目录,这个目录可以理解为控制器,所以只需要找对应名称的文件即可,比如我找到了TypechoUsersController,如下图所示。另外申明一点,我所有的代码实际上都演示了很多案例,可以自己复制粘贴来做修改
6.png

其中的一些重要的代码含义如下:

@RequestMapping(value = "/userInfo")   //定义接口路径
@RequestParam(value = "key", required = false) String key  //接收一个名为key的参数
TypechoUsers info = service.selectByKey(key);  //通过key拿到这个用户的所有信息。

service相当于调用数据库的执行方法,比如selectByKey就代表主键查询,根据用户ID查询所有信息,具体可以打开mapper文件夹的所有XML文件,查看具体的注释,如下图所示。
7.png

而service可以调用所有模块的数据库语句,如用户模块,文章模块,评论模块,具体需要去看TypechoUsersController的头部代码,如下图所示:

@Autowired
TypechoUsersService service;  //调用本模块(用户模块)数据库方法
@Autowired
private TypechoContentsService contentsService;   //调用文章模块数据库方法
@Autowired
private TypechoCommentsService commentsService;  //调用评论模块数据库方法

有了数据库的方法,然后还需要一些常用的方法来复制和使用,如下所示:

判断是否登录

需要在这个接口里,加入如下的参数接收

@RequestParam(value = "key", required = false) String key

然后就可以用如下代码判断登录状态

Integer uStatus = UStatus.getStatus(token,this.dataprefix,redisTemplate);
if(uStatus==0){
    return Result.getResultJson(0,"用户未登录或Token验证失败",null);
}

获取当前登录用户信息

map拿出所有的信息,map里面就可以拿到各种字段信息。

Map map =redisHelp.getMapValue(this.dataprefix+"_"+"userInfo"+token,redisTemplate);
Integer uid  = Integer.parseInt(map.get("uid").toString());  //拿到用户id
String group = map.get("group").toString();  //拿到用户权限组,和typecho一致。

存入Redis和取出Redis

这里可以参考我的列表接口和详情接口,里面提供了具体的存入,判断,取出案例,这里不做多概述。核心就是反正代码写错了电脑又不会爆炸,大不了还原重来。

调用全局方法

在TypechoUsersController的头部,还可以找到如下代码,这些都是定义的全局方法,他们都在common文件夹中。

RedisHelp redisHelp = new RedisHelp();
ResultAll Result = new ResultAll();
baseFull baseFull = new baseFull();
UserStatus UStatus = new UserStatus();
HttpClient HttpClient = new HttpClient();
PHPass phpass = new PHPass(8);

他们的用法可以搜索查看,比如redisHelp负责存取redis数据,Result负责返回接口数据,baseFull定义了一堆常用方法,UStatus判断用户登录状态,HttpClient负责接口端发送请求,phpass负责密码的加密和验证。直接搜索代码或者打开文件看注释就可以看到用法。

添加新接口

你可以选择在web下已有的文件中添加接口,比如在TypechoUsersController中,访问就是如下所示:

/typechoUsers/新接口路径

具体的代码参考如下:

@RequestMapping(value = "/newUrl")
@ResponseBody
public String newUrl() {
    response.put("code" , 1);
    response.put("data" , "这是数据");
    response.put("msg"  , "这是提示");
    return response.toString();
}

如果你需要添加新的模块,那么可以直接在web文件夹下,以其它文件名称的格式创建新文件,内部的代码可以直接先复制,就像install和pay开头的那两个文件一样。先定义一级路径访问,再开始创建二级路径方法。

进阶教程

这里将演示一些实际的进阶案例。

添加一个数据库字段

如果要添加一个数据库字段,那么主要有三个文件要改,一是web下的InstallController,在安装方法newInstall里,就可以看到更新和安装的所有数据库语句,因为你需要增加一个可以修改值的字段,那么就肯定需要让安装和更新也支持这个新字段。如下案例所示(更多可以直接参考InstallController内写法)

    //查询文章表是否存在likes字段
    i = jdbcTemplate.queryForObject("select count(*) from information_schema.columns where table_name = '"+prefix+"_contents' and column_name = 'likes';", Integer.class);
    if (i == 0){
        jdbcTemplate.execute("alter table "+prefix+"_contents ADD likes integer(10) DEFAULT 0;");
        text+="内容模块,字段likes添加完成。";
    }else{
        text+="内容模块,字段likes已经存在,无需添加。";
    }

然后修改类文件,比如我是给文章表增加了字段,那就是需要entity下的文章类TypechoContents里增加一个对应的字段。

/**
 * likes
 */
private Integer likes;

然后就可以修改数据库XMl了,这里是最简单的,直接按照原有的格式修改,只需要注意一些分割的逗号就好了,如下图所示。

8.png
9.png

到这里,新字段就创建完了,对于如何使用,代码那些增加,删除,修改,查列表的都有具体的演示。这里的要点就是,不要管代码多不多,而是要看是不是有啥很明显的规律,实际上我自己也记不住,都是看之前的代码参考着写。

添加一个新数据表

这里我就不写代码了,代码越多越让人觉得难,其实这个直接复制粘贴就好了,通过已有的代码开始改就行。我的做法是通过如下教程的代码生成器,选择指定的数据表,生成代码,再拖进项目。

Springboot半小时入门教程,代码加案例,新手摸坑大全

补充

java里判断是否相等不是==,而是如下的代码范例,这里要注意:

if(isInvite.equals(1)){
    isInvite这个字段等于1
}
if(!isInvite.equals(1)){
    isInvite这个字段不等于1
}

springboot的架构核心就是全部都封装为类,比如定义了类之后,创建类字段,然后存或者取(set是存,get是取,这里IDEA自动生成代码不需要自己记忆和手写)。

TypechoUserapi isApi = new TypechoUserapi();
isApi.setOpenId("字段值");
isApi.setAppLoginType("字段值");

最后

看完觉得代码很多记不住?我自己都记不住,都是复制粘贴,和IDEA编辑器自动弹出补全,根本就不要求记住,只需要了解一个思路和原理。

实在不行可以加群一起探讨。QQ群692117682

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.ruletree.club/archives/3360/
RuleProject关于近期网络上出现大量收费&错误资源的申明
« 上一篇 12-05
记录一下我不小心安装tomcat导致ruleapi打不开的问题
下一篇 » 12-20
广告

发表评论

V注册会员 L评论等级
R2 条回复
  1. 真棒VLv.1 说道:
    2024-01-03     iPhone /    Safari

    好厉害呀

  2. 简智云互联VLv.1 说道:
    2023-08-13     Android /    Chrome

    支持

没有更多评论了

作者信息

热门文章

标签TAG

热评文章