Martian 原名叫 Mars-Java,為了避免跟 java 商標產生衝突,所以改名了。
在遭受了 100 多條評論後,我認識到了一些問題,其中最大的就是 接口受理的請求方式太少了,在某些場景下不夠用。
首先呢,我得在解釋一次:Martian 是可以接收任意 http 請求的,只不過 api 接口只受理這麼幾種,我的限制不是做在服務上的,而是做在接口上的,所以呢 ajax 發出的那個 option 是可以正常接收並響應 200 的,完全沒問題。
希望大家以後不要在誤解咯。
接口受理的請求方式更多了,新增了 PUT 和 DELETE,也就是目前為止,接口可以受理 GET,POET,DELETE,PUT 四種請求方式了, [為什麼不全支持,暫時不予解釋] 。
API 新增 @MarsReference 註解
很簡單,跟之前的 GET,POST 一樣設置,只不過 ReqMethod 裡面多了兩個選項.
@RequestMethod(ReqMethod.PUT)String expUploadRequest(ExpVO expVO)
我們目前的聲明式 API,採用的如下機制:
這樣會出現一些局限,那就是一個 interface 只能對應一個實現類,玩起來就像是 service 的父接口一樣, 為了改善這個情況,我提供了一個新的註解 @MarsReference
這個註解怎麼用呢?請看下面示例,注意看注釋和雙引號裡的漢字
/** * 老套路,正常聲明一個接口 */@MarsApi(refBean = "這裡還是可以引用 bean")public interface ExpApi { /** * get 請求示例 * http://127.0.0.1:8080/expGetRequest?name=張三&names=王五&names=趙六 * @param expVO * @return */ @MarsReference(beanName = "這裡的規則,請看下面第一點",refName = "這裡的規則,請看下面第二點",refType = RefType.METHOD) List<ExpVO> expGetRequest(ExpVO expVO);}
從這一刻開始,interface 和實現類徹底解耦了,他們不再是父子關係(父子關係那一套也一樣兼容),一個 interface 可以引用多個 bean 裡面的方法或者屬性,在一定程度上增加了 interface 的靈活性。
Martian 官網:http://www.mars-framework.com