Prototype功能預覽九:接口最小化原則-更安全的接口

框架整體介紹: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對象中多餘的那些屬性輸出,保證接口輸入的安全性,完整的參數檢查,沒有多餘的結果輸出。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章