Spring Web MVC Restful API 优化之路 (1) - 参数构建优化
2016-03-25 21:11
441 查看
个人原创,如需转载请著名出处,谢谢。
本系列针对的是初、中级Spring Web MVC使用者。 本系列所述内容绝大部分都为干货分享。 有些插件为个人原创。
如果你的服务端的代码还是类似这样的①:
那么我建议你不妨认真的看下本文所推荐的参数构建优化方式。如果你使用的是Spring / Hibernate的Validator方式②(即把输入参数转化成一个实体类,验证过程通过在实体类中的成员变量中添加验证注解),那么我也建议你不妨试下本文所倡导的方式:
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 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),每个模块都可以自定义添加自己所需的方式,无需修改源码可以直接在自己的项目中实现并引入。甚至策略注释也可以完全自己扩展实现。
相关文章推荐
- java-WEB中的监听器Lisener
- GUI - Web前端开发框架
- Extjs4.0 最新最全视频教程
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- MyEclipse Web Project转Eclipse Dynamic Web Project
- axis备忘
- MySQL 优化
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- Google排名优化的几个影响因素
- DB2优化(简易版)
- Erlang实现的一个Web服务器代码实例
- 防止网页脚本病毒执行的方法-from web
- Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架
- C#中尾递归的使用、优化及编译器优化
- 自学成才的秘密:115个 web Develop 资源
- 对优化Ruby on Rails性能的一些办法的探究
- 优化Ruby脚本效率实例分享