要知道,如今很多平台的接口都是可以同時被門戶網站,手機端,移動浏覽器通路,因為接口是通用的,而為了安全起見,有些接口都會設定一個門檻,那就是限制通路次數,也就是在某一時間段内不能過多的通路,比如登入次數限制,在一些金融理财或者銀行的接口上比較常見,另外一些與使用者資訊有關的接口都會有一個限制門檻
那麼這個限制門檻怎麼來做呢,其實有很多種方法,主流的做法可以用攔截器或者注解,那麼今天咱們用注解來實作
首先需要定義一個注解,如下:
然後再使用spring aop,攔截被你注解的那個controller的方法
這個類使用了redis緩存作為計數器,因為好用,當然你用靜态的map也行,但是考慮的分布式叢集的話一般還是建議使用redis比較好。
大緻的流程就是要擷取redis中的調用方法次數,使用incr函數,當key不存在的時候預設為0然後累加1,當累加1大于limit設定的限制次數時,則抛出異常,這個地方需要注意,如果是ajax調用的話需要判斷是否ajax,然後再傳回錯誤資訊

檢視redis中key的剩餘時間:
好,那麼按照如上方法就能實作對接口通路次數的限制