Prototype功能预览九:接口最小化原则-更安全的接口

来源:互联网 发布:coc弓箭女皇升级数据 编辑:程序博客网 时间:2024/05/16 12:34

框架整体介绍:http://blog.csdn.net/flyxxxxx/article/category/7055640

对此框架有兴趣或想参与开发的请加QQ群:255195191

在Spring MVC或dubbo以及其它任意接口调用(跨服务器或第三方调用)过程中,我们经常会用一些POJO对象作为参数及返回结果,这会有以下问题:

1、作为参数的POJO对象,是否所有的属性都是接口所需要的?如果不是,调用都传入了一些不需要的属性值,接口是否对这个不需要的属性值做了检查?我相信几乎100%的项目都没有对此做检查。

2、作为参数,是否在JAVA端做了完整的参数检查?就我了解到的项目来说,基本都只在前端做了参数的检查工作,后端几乎没有检查。

3、作为输出结果的POJO对象,是否所有的属性值都是APP或前端调用时需要用到的?我相信不是,那么,多余的属性会造成手机流量的浪费以及对APP或前端的干扰。

在Prototype框架中,通过注解来定义输入输出,所有输入的参数都由框架自动检查,未定义输入的参数会完全忽略,未定义输出的属性不会输出:

@ServiceDefine(hint = "...", value = "second demo")//定义一个服务接口

@RequestMapping("/query")

public class QueryUser extends Business{

    @Input(@Prop(desc = "关键字",maxLength=20))//输出
    private String keyword;

     @Output(desc="用户列表",{@Prop(desc="ID",name="id"),@Prop(desc="姓名",name="name")})

    private List<User> list;

}

上面的代码相当于Spring MVC以下的代码:

@RequestMapping("/query")

@ResponseBody

public List<User> queryUser(String keyword){

    ...

}

两者之前的差别在于,Prototype框架不会把User对象中多余的那些属性输出,保证接口输入的安全性,完整的参数检查,没有多余的结果输出。



阅读全文
0 0
原创粉丝点击