TXWeb帮助
一.简介
传统模版方式开发
二. 6.x功能简介功能及配置说明
6.5版本开始标准化了,API接口方式,这里主要介绍API方式的开发和规范.传统方式也可以同时调用
三. 返回方式说明
当使用ROC方式调用返回的数据都会通过 com.github.jspxnet.txweb.result.RocResponse 这个类封装.
如果已经封装了的就不再次封装,如果是json对象,也不会自动封装,会直接返回.
@Operate(caption = "例子",method = "/persion")
public Persion getPersion()
{
Persion persion = new Persion();
persion.setAge(101);
persion.setName("name");
return persion;
}
- roc调用返回的是json,里边多了success=1,如果是模版方式调用返回的就是Persion这个对象.所以尽量使用原对象返回,
这样能够很好的兼容模版方式和远程分布式调用对象传输.
四. 接口调用写法说明
< code >什么时候需要封装返回,主要使用在分页查询列表.
例如
/**
* @param param 翻页参数
* @return 日志列表
*/
@Operate(caption = "日志翻页列表", method = "/list/page")
public RocResponse<List<ActionLog>> getList(@Param("翻页参数") PageParam param) {
IRole role = getRole();
if (role.getUserType() < UserEnumType.MANAGER.getValue()) {
return RocResponse.error(ErrorEnumType.POWER);
}
RocResponse<List<ActionLog>> rocResponse = RocResponse.success(actionLogDAO.getList(param.getField(),
param.getFind(), param.getTerm(), param.getSort(), param.getUid(), param.getCurrentPage(), param.getCount()));
rocResponse.setTotalCount(actionLogDAO.getCount(param.getField(), param.getFind(), param.getTerm(), param.getUid()));
return rocResponse.setCurrentPage(param.getCurrentPage()).setCount(param.getCount());
}
PageParam 是一个常用的翻页参数模型,能够减少代码和下边的方式一样
@Operate(caption = "联系人列表", method = "/list/page")
public RocResponse<List<ContactsVO>> getContactsList(@Param(caption = "查询关键字") String[] field, @Param(caption = "查询关键字") String[] find,
@Param(caption = "分组") String nodeId,
@Param(caption = "排序") String sort, @Param(caption = "页数") int currentPage, @Param(caption = "行数") int count) {
return xxx;
}
下边是一个全局参数的例子,update没有配置method默认就是方法名称
区别是PageParam param 属于外部全局参数,而下边这个是内部参数.传递方式有区别
/**
* 请求: String url = "http://127.0.0.1:8080/demo/persion/update.jhtml";
* {"params": {
* "old": 18,
* "name": "小明同学",
* "sumOld": 3
* }}
* <p>
* <p>
* 返回:(注意sum的来源)
* {
* "protocol": "jspx.net-remote",
* "code": 200,
* "data": {
* "old": 18,
* "name": "小明同学",
* "sum": 21,
* "sumOld": 3
* },
* "success": 1,
* "message": "success",
* "version": "3.0"
* }
* <p>
* 这里演示 参数QO进入,和DTO 的返回
*
* @param demoParam
* @return
*/
@Override
@Operate(caption = "演示对象参数")
public DemoDto update(@Param DemoParamReq demoParam)
{
//接收到参数
//这里加入自己的逻辑处理,或者封装在service中
DemoDto demoDto = BeanUtil.copy(demoParam,DemoDto.class);
//返回对象 DTO
return demoDto;
}
演示分布式调用的例子,所有的API只有写了接口,默认做一个index的方法或者已有方法,这样就可以调用这个接口里边的所有方法
@Test
public void testHessianClient() throws Exception {
String url = "http://127.0.0.1:8080/demo/persion/index.jhtml";
HessianClient hessianClient = HessianClientFactory.getInstance();
hessianClient.setSessionId("token Auth"); //认证token
int response = 0;
try {
SpringPersionInterface springPersionInterface = hessianClient.getInterface(SpringPersionInterface.class, url);
response = springPersionInterface.save();
} catch (RocException e) {
e.getResponse();
System.out.println(new JSONObject(response).toString());
}
}
五. 注释方式url配置
url映射类头部注释标签@HttpMethod,在ioc中配置扫描路径,扫描到后会自动载入
@HttpMethod(caption = "功能描述", actionName = "*", namespace = "mall/collect")
@Bean(namespace = "mall", singleton = true)
六. 配置API文档
你所开发的代码,都会自动生成API文档,是否开放出API文档只需要配置一下
ioc配置, ${softName} 表示你的软件命名空间,一般都是网站的根目录
<?xml version="1.0" encoding="UTF-8"?>
<sioc>
<sioc namespace="${softName}/api" extends="${softName}">
<bean class="com.github.jspxnet.txweb.view.ApiDocView" />
</sioc>
</sioc>
txweb配置
<?xml version="1.0" encoding="UTF-8"?>
<txweb>
<package extends="${softName}" namespace="${softName}/api">
<action name="appname" class="com.github.jspxnet.txweb.view.ApiDocView" caption="API文档" method="getAppName"/>
<action name="indexing|fielding" class="com.github.jspxnet.txweb.view.ApiDocView" caption="API文档"/>
</package>
<package extends="${softName}/api/document" namespace="${softName}/api">
<action name="*" class="com.github.jspxnet.txweb.view.ApiDocView" caption="API文档详细"/>
</package>
<package extends="${softName}/api/table" namespace="${softName}/api">
<action name="*" class="com.github.jspxnet.txweb.view.ApiDocView" caption="API文档表结构"/>
</package>
</txweb>
六. 注释方式自动载入
scan 会自动扫描 相关注释载入系统,并不需要每个都手动配置
@HttpMethod
@Bean
@Describe
<?xml version="1.0" encoding="UTF-8"?>
<txweb>
<package namespace="demo" extends="global">
<scan package="jspx.example" />
</package>
<load file="txweb/api.xml" softName="demo" />
</txweb>