restful接口
restful接口具有很多优势,比如可以通过一个接口的get/put/delete类似实现查询、新增、删除、修改的功能,笔者所做的项目是需要用到restful接口来提供给其他项目使用
第一步:在web.xml里面配置拦截白名单
首先,别的项目想要访问我们对外暴露的接口时候,我们必须将该类请求放行不拦截,别的项目才可以访问到我们的请求,我们使用的是cas单点登录的框架,至于单点登录相关的知识,网上有很多介绍,怎么集成,怎么写过滤器都有相关教程,读者可以自行百度,我们需要在web.xml中添加如下配置:
<filter>
<filter-name>CAS Authentication Filter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://127.0.0.1:8443/sso/login</param-value>
</init-param>
<init-param>
<description>URL白名单</description>
<param-name>ignorePattern</param-name>
<!--此处用于配置多个地址 -->
<param-value>/res/|/arz/|/sso/</param-value>
</init-param>
<init-param>
<description>忽略请求URL匹配模式(REGEX正则)</description>
<param-name>ignoreUrlPatternType</param-name>
<param-value>REGEX</param-value>
</init-param>
</filter>
接下来我们在controller层编写好一个控制器类,在其中编写相关实现方法即可:
package com.cn.zhangb.controller;
@RequestMapping(value = "/res")
@RestController
public class RestController<main> extends BaseController {
static final Logger LOGGER = LoggerFactory.getLogger(RestController.class);
@Autowired
private TestService testService;
/**
* 根据用户账号获取系统菜单列表
*/
//设置请求方式和编码
@RequestMapping(value = "/getUserMenu", method = {RequestMethod.POST}, produces = "application/json;charset=utf-8")
public String getUserMenu(HttpServletRequest request) {
String requestStr = "";
try {
requestStr = this.getRequestPostData(request);
} catch (IOException e) {
e.printStackTrace();
return JsonUtil.toErrorJson("接收参数异常!").toString();
}
JSONObject paramJson = JSONObject.fromObject(requestStr);
List<Menu> menus = null;
if (paramJson.getString("account") != null && paramJson.getString("yybh") != null) {
menus = testService.getMenus(paramJson.getString("account"), paramJson.getString("yybh"));
JSONObject resultObj = JsonUtil.toSuccessJson("获取菜单信息成功!", menus);
return resultObj.toString();
} else {
return JsonUtil.toErrorJson("接收参数异常!").toString();
}
}
接下来我们可以用postman请求接口:
这样我们就可以很方便的实现不同项目直接的接口互相调用了