您的位置:首页 > 编程语言 > Java开发

Spring Web MVC Restful API 优化之路 (1) - 参数构建优化

2016-03-25 21:11 441 查看
个人原创,如需转载请著名出处,谢谢。

本系列针对的是初、中级Spring Web MVC使用者。 本系列所述内容绝大部分都为干货分享。 有些插件为个人原创。

如果你的服务端的代码还是类似这样的①:

@RequestMapping(value = "", method = RequestMethod.GET)
public void myApi(HttpServletRequest request, HttpServletResponse response) {
String pageIdx = request.getParameter("pageIdx");
String pageMax = request.getParameter("pageMax");
// ...
if (!Validator.validatePageIdx(pageIdx)) {
// return some syntax error message.
return;
}
if (!Validator.validatePageMax(pageMax)) {
// return some syntax error message.
return;
}
// ...
// do real logical stuffs
// ...
}

那么我建议你不妨认真的看下本文所推荐的参数构建优化方式。如果你使用的是Spring / Hibernate的Validator方式②(即把输入参数转化成一个实体类,验证过程通过在实体类中的成员变量中添加验证注解),那么我也建议你不妨试下本文所倡导的方式:

@RequestMapping(value = "",method = RequestMethod.POST)
public void api(@Required("PAGE_IDX") Integer pageIdx,
@Required("PAGE_MAX") Integer pageMax) {
// do real logical stuffs directly here now
}

Kotsu插件③地址:https://github.com/ronankim/kotsu

③相比较于①方式:

1. 在代码量上首先就有很大的缩减,简化了很多重复的代码。

2. 在应对更复杂的输入环境时更灵活简便(比如POST方式时Kotsu会自动识别"application/json"亦或"application/xml"亦或"form"类型输入或URL Param形式的输入)。

3. 输入为多种情况时应对表达更加灵活(比如甄别{}、{"userName": null}、{"userName": "abcd"}等各种情形)。

③相比较于②方式:

1. 不需要为每个输入都建立一个模型。

2. 相同的参数验证具体方法和范围等你不需要记住,只需记住策略标记字符串即可,同时所需参数直接写在函数参数中,一目了然。

3. 同样,针对不同的输入情况表达更加灵活(比如甄别{}、{"userName": null}、{"userName": "abcd"}等各种情形)。

在遇到一些临时的非复用型的输入参数时,我们亦可以使用策略注解直接表达验证和类型转化方式。(如@VInteger,@VString等)。

Kotsu主要分为三个子模块:参数提取模块(Extractor)、参数验证模块(Validator)和参数组装模块(Assembler),每个模块都可以自定义添加自己所需的方式,无需修改源码可以直接在自己的项目中实现并引入。甚至策略注释也可以完全自己扩展实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring web springmvc 优化