关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、3102411850 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 6653|回复: 0

JEECG-Swagger UI的使用说明

[复制链接]
发表于 2018-9-7 15:35:12 | 显示全部楼层 |阅读模式
一.代码生成(此步骤为代码生成器的使用,如不清楚请查阅相关文档视频)

1.进入菜单【在线开发】-->【Online表单开发】,选中一张单表/主表,点击代码生成按钮。

2.弹出页面中填写代码生成目录为项目根目录,填写包名,勾选"是否支持Restful"为"是",默认为"否”,如下图

11.png

二.swagger-ui 使用,在线调试接口

1.访问http://localhost:8080/jeecg/swagger/index.html [此地址根据自己环境而定]

2.访问【tokenAPI : 鉴权token接口】-->【POST /rest/tokens】,按下图操作

22.png


3.在响应体中获取token

33.png


4.调用接口-创建

44.png


5.查看 接口-创建测试结果

55.png


6. 调用接口-分页查询

66.png


7.查看 接口-分页查询 测试结果

77.png

8.其他接口类似,先填写token,再填写相关参数即可测试

三.接口安全,token原理讲解和redis配置

1.机制说明

    基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利


2.基本流程

  (1)用户使用用户名密码来请求服务器

  (2)服务器进行验证用户的信息

  (3)服务器通过验证发送给用户一个token

  (4)客户端存储token,并在每次请求时附送上这个token值(存在head里的参数X-AUTH-TOKEN)

  (5)服务端验证token值,并返回数据


3. redis配置(redis环境搭建参考相关文档/视频)

    JWT 验证token采用redis进行缓存,redis配置文件:src/main/resources/redis.properties, 修改redis对应的IP和端口,如下:

  1. #redis
  2. redis.host=124.206.91.99
  3. redis.port=6379
  4. redis.pass=
  5. redis.adapter.maxIdle=100
  6. redis.adapter.minIdle=10
  7. redis.adapter.testOnBorrow=true
  8. redis.adapter.testOnReturn=true
  9. redis.adapter.testWhileIdle=true
  10. redis.adapter.numTestsPerEvictionRun=10
  11. redis.adapter.timeBetweenEvictionRunsMillis=60000
复制代码
四. 接口本地单元测试(单元测试环境搭建请参考相关文档/视频)
  1. import org.jeecgframework.jwt.util.JwtHttpUtil;
  2. import org.junit.Test;

  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.generator.test.entity.TestSingleEntity;

  6. public class RestfulTestSingle{
  7.         
  8.         
  9.         public String getToken(String userName,String password){
  10.                 String url = "http://localhost:8080/jeecg/rest/tokens?username="+userName+"&password="+password;
  11.                 String token= JwtHttpUtil.httpRequest(url, "POST", null);
  12.                 System.out.println("获取的token为:"+token);
  13.                 return token;
  14.         }

  15.         public JSONObject getList(String token){
  16.                 String url = "http://localhost:8080/jeecg/rest/testSingleController/list/1/10";
  17.                 JSONObject resp= JwtHttpUtil.httpRequest(url, "GET", null,token);
  18.                 System.out.println(resp.toJSONString());
  19.                 return resp;
  20.         }
  21.         
  22.         public JSONObject delete(String token,String id){
  23.                 String url = "http://localhost:8080/jeecg/rest/testSingleController/"+id;
  24.                 JSONObject resp= JwtHttpUtil.httpRequest(url, "DELETE", null,token);
  25.                 System.out.println(resp.toJSONString());
  26.                 return resp;
  27.         }
  28.         
  29.         public JSONObject create(String token,String json){
  30.                 String url = "http://localhost:8080/jeecg/rest/testSingleController";
  31.                 JSONObject resp= JwtHttpUtil.httpRequest(url, "POST", json,token);
  32.                 System.out.println(resp.toJSONString());
  33.                 return resp;
  34.         }
  35.         
  36.         public JSONObject update(String token,String json,String id){
  37.                 String url = "http://localhost:8080/jeecg/rest/testSingleController/"+id;
  38.                 JSONObject resp= JwtHttpUtil.httpRequest(url, "PUT", json,token);
  39.                 System.out.println(resp.toJSONString());
  40.                 return resp;
  41.         }
  42.         
  43.         public JSONObject get(String token,String id){
  44.                 String url = "http://localhost:8080/jeecg/rest/testSingleController/"+id;
  45.                 JSONObject resp= JwtHttpUtil.httpRequest(url, "GET", null,token);
  46.                 System.out.println(resp.toJSONString());
  47.                 return resp;
  48.         }
  49.         
  50.         @Test
  51.         public void test(){
  52.                 String token = "";//getToken调用一次即可将其返回的值保存下来,以便其他接口可调用传参
  53.                 //getToken("admin", "123456");

  54.                 //获取列表
  55.                 //getList(token);
  56.                
  57.                 //删除
  58.                 //delete(token, "4028f6816588914f016588b24a8c0003");
  59.                
  60.                 //创建
  61.                 /*TestSingleEntity entity = new TestSingleEntity();
  62.                 entity.setName("李四");
  63.                 create(token, JSON.toJSON(entity).toString());*/
  64.                
  65.                 //修改
  66.                 /*String id = "4028f6816588f200016588f6e2950001";
  67.                 TestSingleEntity entity = new TestSingleEntity();
  68.                 entity.setId(id);
  69.                 entity.setName("李四4号");
  70.                 update(token, JSONObject.toJSONString(entity),id);*/
  71.                
  72.                 //获取单条记录
  73.                 /*String id = "4028f6816588f200016588f6e2950001";
  74.                 get(token, id);*/
  75.                
  76.         }
  77. }
复制代码
五. 前段UI开发如何调用接口
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@include file="/context/mytags.jsp"%>
  3. <t:base type="jquery,easyui,tools,DatePicker"></t:base>
  4. <div class="easyui-layout" fit="true">
  5.   <div region="center" style="padding:0px;border:0px">
  6.   <t:datagrid name="testSingleList" checkbox="true" pagination="true" fitColumns="true" title="单表测试" actionUrl="testSingleController.do?datagrid" idField="id" sortName="createDate" fit="true" queryMode="group">
  7.    <t:dgCol title="主键"  field="id"  hidden="true"  queryMode="single"  width="120"></t:dgCol>
  8.    <t:dgCol title="创建日期"  field="createDate"  formatter="yyyy-MM-dd"  queryMode="single"  width="120"></t:dgCol>
  9.    <t:dgCol title="名臣"  field="name"  query="true"  queryMode="single"  width="120"></t:dgCol>
  10.    <t:dgCol title="下拉"  field="iselect"  query="true"  queryMode="single"  dictionary="t_s_depart,id,departname"  width="120"></t:dgCol>
  11.    <t:dgCol title="单选"  field="icheck"  queryMode="single"  dictionary="fieltype"  width="120"></t:dgCol>
  12.    <t:dgCol title="多选"  field="iradio"  queryMode="single"  dictionary="s_type"  width="120"></t:dgCol>
  13.    <t:dgCol title="日期"  field="idate"  formatter="yyyy-MM-dd"  query="true"  queryMode="group"  width="120"></t:dgCol>
  14.    <t:dgCol title="文件"  field="ifile"  queryMode="single"  formatterjs="btListFileFormatter" width="120"></t:dgCol>
  15.    <t:dgCol title="输入框"  field="iterr"  queryMode="single"  image="true" imageSize="50,50" formatterjs="btListImgFormatter" width="120"></t:dgCol>
  16.    <t:dgCol title="时间时分秒"  field="idatetime"  formatter="yyyy-MM-dd hh:mm:ss"  queryMode="single"  width="120"></t:dgCol>
  17.    <t:dgCol title="操作" field="opt" width="100"></t:dgCol>
  18.    <t:dgDelOpt title="删除" url="testSingleController.do?doDel&id={id}" urlclass="ace_button"  urlfont="fa-trash-o"/>
  19.    <t:dgToolBar title="调用接口" icon="icon-redo" funname="testInterface"></t:dgToolBar>
  20.   </t:datagrid>
  21.   </div>
  22. </div>
  23. <script type="text/javascript">
  24. //调用接口,先获取token,后调用接口
  25. function testInterface(){
  26.         var userName = "admin",password = "123456";
  27.         $.ajax({
  28.                 url:"http://localhost:8080/jeecg/rest/tokens?username="+userName+"&password="+password,
  29.                 type:"POST",
  30.                 success:function(token){
  31.                         //query(token);
  32.                         //creat(token);
  33.                 }
  34.         });
  35. }
  36. //不需要传参数
  37. function query(token){
  38.         $.ajax({
  39.                 url:"http://localhost:8080/jeecg/rest/testSingleController/list/1/10",
  40.                 type:"GET",
  41.                 dataType:"JSON",
  42.                 beforeSend: function (XMLHttpRequest) {
  43.                 XMLHttpRequest.setRequestHeader("X-AUTH-TOKEN", token);//设置token
  44.         },
  45.         success:function(data){
  46.                 console.log(data);
  47.         }
  48.         });
  49. }
  50. //需要传参数
  51. function creat(token){
  52.         var obj = {
  53.                 name:"张二",
  54.                 idate:"2018-08-29"
  55.         };
  56.         $.ajax({
  57.                 url:"http://localhost:8080/jeecg/rest/testSingleController",
  58.                 type:"POST",
  59.                 dataType:"JSON",
  60.                 contentType: "application/json;charset=utf-8",
  61.                 data :JSON.stringify(obj),
  62.                 beforeSend: function (XMLHttpRequest) {
  63.                 XMLHttpRequest.setRequestHeader("X-AUTH-TOKEN", token);//设置token
  64.         },
  65.         success:function(data){
  66.                 console.log(data);
  67.         }
  68.         });
  69. }

  70. </script>
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表