论坛首页 Java企业应用论坛

为手机端提供接口时,大家一般如何在后台判断参数合法性

浏览 9494 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-07-19  
最近在为手机端写接口,不知道大家一般在写这种接口的时候,是如何判断参数的合法性的,如必须参数限制,整形限制等等。在参数特别多的情况下,如保存一个表单时,参数会很多,一个一个去判断处理,代码太多,大家有什么好的办法?目前我用的捕捉异常的方法限制必须参数和整型等参数。代码如下。解释见代码注释。我这么写的缺点就是处理不能复用,参数错误判断种类也有限。
希望大家也说说自己的处理方法,学习一下,
  	Map<String,Object> result = new HashMap<String,Object>();
    	Map<String,Integer> params = new HashMap<String,Integer>();
    	try {
    		//1.对必要参数调用toString,当缺少此参数时抛出空指针异常,返回APP缺少参数不全信息
    		//2.再对参数进行整型转换,参数类型不正确时抛出转换异常,返回APP参数类型错误
    		params.put("usrId",Integer.parseInt(request.getParameter("usrId").toString()));
    		params.put("manId",Integer.parseInt(request.getParameter("manId").toString()));
    		params.put("passPortId",Integer.parseInt(request.getParameter("passPortId").toString()));
    	} catch (NumberFormatException e) {
    		result.put("STATUS", "1");
    		result.put("ERRCODE", "100");
    		result.put("ERRMSG", "参数类型错误");
    		return result;
    	} catch (NullPointerException e) {
    		result.put("STATUS", "1");
    		result.put("ERRCODE", "101");
    		result.put("ERRMSG", "参数传递不全");
    		return result;
    	}
   发表时间:2013-07-19  
可以使用WEB MVC框架, 比如 spring mvc, 有专门的validator
0 请登录后投票
   发表时间:2013-07-19  
Spring MVC   的参数绑定 默认进行了转换(同名的),也可以像楼上说的那样,用Vaildator
0 请登录后投票
   发表时间:2013-07-19  
fisher123 写道
Spring MVC   的参数绑定 默认进行了转换(同名的),也可以像楼上说的那样,用Vaildator


自动绑定,不能判断参数不合法
0 请登录后投票
   发表时间:2013-07-19  
cengjingyiwei 写道
fisher123 写道
Spring MVC   的参数绑定 默认进行了转换(同名的),也可以像楼上说的那样,用Vaildator


自动绑定,不能判断参数不合法

没明白楼主的意思. 绑定到对象后, 为什么不能判断参数不合法? 比如呢?
0 请登录后投票
   发表时间:2013-07-19  
ivan19861025 写道
cengjingyiwei 写道
fisher123 写道
Spring MVC   的参数绑定 默认进行了转换(同名的),也可以像楼上说的那样,用Vaildator


自动绑定,不能判断参数不合法

没明白楼主的意思. 绑定到对象后, 为什么不能判断参数不合法? 比如呢?


先自动绑定,再去判断绑定的参数合法不合法,你不感觉还不如自己从request中去,并判断参数合法性,一步到位来得直接些?如我以上的代码。
其实我就是想知道,大家给手机提供接口时,是如何处理参数的
0 请登录后投票
   发表时间:2013-07-19  
cengjingyiwei 写道
ivan19861025 写道
cengjingyiwei 写道
fisher123 写道
Spring MVC   的参数绑定 默认进行了转换(同名的),也可以像楼上说的那样,用Vaildator


自动绑定,不能判断参数不合法

没明白楼主的意思. 绑定到对象后, 为什么不能判断参数不合法? 比如呢?


先自动绑定,再去判断绑定的参数合法不合法,你不感觉还不如自己从request中去,并判断参数合法性,一步到位来得直接些?如我以上的代码。
其实我就是想知道,大家给手机提供接口时,是如何处理参数的

用了spring mvc, 参数自动生成javabean, 再对该javabean作数据合法性验证(可选), 给子类controller调用.
试想, 如果提供20个接口, 每个接口都有很多参数, request.getP(),要写多少次??
光获取参数都要几十上面行代码了.
0 请登录后投票
   发表时间:2013-07-19  
ivan19861025 写道
cengjingyiwei 写道
ivan19861025 写道
cengjingyiwei 写道
fisher123 写道
Spring MVC   的参数绑定 默认进行了转换(同名的),也可以像楼上说的那样,用Vaildator


自动绑定,不能判断参数不合法

没明白楼主的意思. 绑定到对象后, 为什么不能判断参数不合法? 比如呢?


先自动绑定,再去判断绑定的参数合法不合法,你不感觉还不如自己从request中去,并判断参数合法性,一步到位来得直接些?如我以上的代码。
其实我就是想知道,大家给手机提供接口时,是如何处理参数的

用了spring mvc, 参数自动生成javabean, 再对该javabean作数据合法性验证(可选), 给子类controller调用.
试想, 如果提供20个接口, 每个接口都有很多参数, request.getP(),要写多少次??
光获取参数都要几十上面行代码了.


理论上确实这样的,但实际情况是,接口参数通用性极小,查询参数多为ID,几乎都要做整型验证,即使对javabean验证,不也是重复吗?和request没什么区别。
另外,感谢您的建议,不是较真,真的是在写这块,从实现情况出发考虑的。
0 请登录后投票
   发表时间:2013-07-19  
从你的角度说, 即然代码都较少, 而且几乎不变的话. 我觉得就像你这么写就OK了.
要不用模板方法模式, 子类里有逻辑, 如果验证不通过 就抛出异常, 父类统一处理异常,
就把这个不合法的情况, 抽象在父类里处理了.
0 请登录后投票
   发表时间:2013-07-20  
cengjingyiwei 写道
ivan19861025 写道
cengjingyiwei 写道
ivan19861025 写道
cengjingyiwei 写道
fisher123 写道
Spring MVC   的参数绑定 默认进行了转换(同名的),也可以像楼上说的那样,用Vaildator


自动绑定,不能判断参数不合法

没明白楼主的意思. 绑定到对象后, 为什么不能判断参数不合法? 比如呢?


先自动绑定,再去判断绑定的参数合法不合法,你不感觉还不如自己从request中去,并判断参数合法性,一步到位来得直接些?如我以上的代码。
其实我就是想知道,大家给手机提供接口时,是如何处理参数的

用了spring mvc, 参数自动生成javabean, 再对该javabean作数据合法性验证(可选), 给子类controller调用.
试想, 如果提供20个接口, 每个接口都有很多参数, request.getP(),要写多少次??
光获取参数都要几十上面行代码了.


理论上确实这样的,但实际情况是,接口参数通用性极小,查询参数多为ID,几乎都要做整型验证,即使对javabean验证,不也是重复吗?和request没什么区别。
另外,感谢您的建议,不是较真,真的是在写这块,从实现情况出发考虑的。

做整形验证 Spring 参数绑定 自己就验证了,转换不到整型就会抛异常。如果是字符串之类的,需要验证合法性
比如  验证一个字符串是不是日期类的字符串,可以在voidlitor里面验证  也可以自己在controller里面做验证啊 
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics