前言
NC65中除了支持SOAP协议的webservice接口外,还支持REST协议的接口,NC65的REST服务封装的是restlet,找了很多资料终于弄清楚了,这里总结归纳一下。
一、接口注册方法
在模块的META-INF文件夹下,增加.rest扩展名的接口文件,内容为xml格式;开发项目中也是在项目对应的META-INF下,增加对应的接口文件。参考脚本如下:
二、服务代码编写
1. 在对应的目录结构下,添加相关的接口处理服务类
代码如下(示例):
package nc.rest.bd.oa;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import nc.bs.framework.common.NCLocator;
import nc.bs.framework.server.ISecurityTokenCallback;
import nc.itf.bd.sql.IOracleUtil;
import nc.vo.oa.util.UserCheckUtil;
import nc.vo.pub.BusinessException;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import uap.ws.rest.resource.AbstractUAPRestResource;
@Path("/FwOaQueryServer")
public class FwOaQueryRestFulServer extends AbstractUAPRestResource {
public String getModule() {
return "uapbd";
}
@POST
@Path("/querySql") //路径
@Consumes("application/json") //输入参数格式
@Produces("application/json") //输出参数格式
public JSONObject dealQuerySql(JSONObject tranSportJson) throws BusinessException {
return resultJson;
}
}
2.部署和测试
将上面的代码导出补丁,部署到模块(进入Home里bin目录下SysConfig.bat,重新部署。如果补丁修改的文件是在client目录下不需要重新部署,如果是在public跟private目录下则需要重新部署),重启中间件。
Postman测试时,测试URL设置为:http://ip:port/uapws/rest/xxx/xxx,其中xxx/xxx为代码中的类声明中的Path和方法中的Path,uapws/rest/为固定的NC65中的REST服务访问路径。Postman中设置请求方式为“POST”,请求HEAD参数Content-Type为application/json即可。
总结
注意:调试的时候,需要配置自变量,即添加uapws模块(已添加的忽略),不然调试没反应,我看了网上很多资料都没有说这一点,毕竟还是大多数人都是不熟悉这些东西的。配置如图: