自己的一个JFinal小项目,想加入swagger API,于是寻找已有的集成方案,集成过程中也是折腾了一番,中间感觉还是不够简化,于是动手重新整合写了一个,还不完善,后续会继续完善。实现过程中使用和参考借鉴了江南久无雪的https://gitee.com/leeckent/jfinal-swagger 以及五只鸭子的前端样式https://gitee.com/caspar-chen/Swagger-UI-layer,感谢两位的分享。
源码下载地址:https://gitee.com/luketech/jfinal-swagger-api
目前特点:
1.诸多注解属性非必需,包含默认值或自动设定;
2.Controller注解及同一Controller下的Action支持自定义排序;
3.支持自定义全局参数;
4.支持两种主题模式:layui和default,默认layui,default主题为官网默认的(官网提供的js总是有问题,不推荐)。
使用介绍:
1.将本项目源码加入到实际项目中(如需修改包名,请自行修改)
2.JFinalConfig类中配置如下内容:
public class AppConfig extends JFinalConfig { /** * 配置访问路由 * @param me */ @Override public void configRoute(Routes me) { // 配置Swagger UI访问路由 me.add(new SwaggerRoute()); } /** * JFinal启动完成后的操作 */ @Override public void onStart() { // 添加全局参数(如token,非必需) SwaggerConfig.addGlobalParam("x-access-token", "token令牌", "string", "jfinal-awesome-token", true, "", InType.HEADER); } }
3.Controller添加注解: 常用极少配置的Demo:
import com.jfinal.core.Controller; import com.jfinal.kit.Kv; import com.jfinal.swagger.annotation.ActionApi; import com.jfinal.swagger.annotation.Api; import com.jfinal.swagger.annotation.Param; @Api(remark="UserController,排序到末尾", sort=2) public class UserController extends Controller { @ActionApi(remark="DemoController首页Action") public void index() { renderJson(Kv.by("user", "Hello JFinal!")); } @ActionApi(remark="输出文本") @Param(name="text", remark="文本内容") public void text() { renderText("输出接收文本:<br>" + get("text")); } }
所有支持的配置Demo演示(大部分属性可以使用默认或未指定时会自动设定,这里仅做演示):
import java.util.Arrays; import com.jfinal.core.Controller; import com.jfinal.kit.Kv; import com.jfinal.swagger.annotation.ActionApi; import com.jfinal.swagger.annotation.Api; import com.jfinal.swagger.annotation.Param; import com.jfinal.swagger.annotation.Params; import com.jfinal.swagger.enums.InType; @Api(tag="/", remark="首页Controller", sort=10, outerRemark="查看更多关于首页", outerUrl="https://www.baidu.com/s?wd=JFinal") public class IndexController extends Controller { @ActionApi(tag="/", remark="IndexController首页Action", summary="首页", sort=2) public void index() { renderJson(Kv.by("index", "Hello JFinal!")); } @ActionApi(tag="/", remark="欢迎加入JFinal俱乐部", httpMethod="post", sort=1, consumes="application/json", url="/club") @Params({ @Param(name="memberName", remark="会员", dataType="string", defaultValue="James", required=true, in=InType.QUERY, format="", schema="http"), @Param(name="memberId", remark="会员ID", dataType="integer", defaultValue="88888", required=true, minimum="1", maximum="999999"), @Param(name="level", remark="会员等级", dataType="integer", defaultValue="8") }) public void club() { String memberName = get("memberName"); int memberId = getInt("memberId"); int level = getInt("level"); Kv cnKv = Kv.by("welcome", memberName + ":欢迎加入JFinal俱乐部!").set("memberId", memberId).set("level", level); Kv enKv = Kv.by("welcome", memberName + ":Welcome to JFinal club!").set("memberId", memberId).set("level", level); renderJson(Arrays.asList(cnKv, enKv)); } }
4.启动项目,访问http://localhost:8080/swagger.
效果图如下: