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

本文介绍了一种使用Kotsu插件优化Spring Web应用输入参数处理的方法,该插件能够显著减少代码量,提高输入处理灵活性,并简化参数验证流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人原创,如需转载请著名出处,谢谢。

本系列针对的是初、中级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),每个模块都可以自定义添加自己所需的方式,无需修改源码可以直接在自己的项目中实现并引入。甚至策略注释也可以完全自己扩展实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值