摘要:在使用做接口虛擬化的過程中遇到一個比較棘手的問題,就是根據官方文檔提供的案例,并不能跑通請求在處理傳參格式的虛擬化。的絕大部分庫,都是可以直接拿來就用的。此段文字為了撐字數強加的,與內容無關。歡迎有興趣的童鞋一起交流
在使用moco API做接口虛擬化的過程中遇到一個比較棘手的問題,就是根據官方文檔提供的案例,并不能跑通post請求在處理json傳參格式的虛擬化。經過查詢源碼,發現了一個問題:
源碼:
public class ParamRequestExtractor extends HttpRequestExtractor{ private final String param; public ParamRequestExtractor(final String param) { this.param = param; } @Override protected Optional doExtract(final HttpRequest request) { String[] reference = request.getQueries().get(this.param); return fromNullable(reference); } }
在獲取請求的內容時,發現該方法不能獲取到正確的請求參數,后來索性自己重寫了一個Extractor類,內容如下:
package com.fun.moco.support; import com.github.dreamhead.moco.HttpRequest; import com.github.dreamhead.moco.HttpRequestExtractor; import com.github.dreamhead.moco.RequestExtractor; import com.google.common.base.Optional; import net.sf.json.JSONObject; import static com.github.dreamhead.moco.util.Preconditions.checkNotNullOrEmpty; import static com.google.common.base.Optional.fromNullable; /** * json數據格式參數值的獲取 */ @SuppressWarnings("all") public class JsonExtractor extends HttpRequestExtractor{ private final String param; public JsonExtractor(final String param) { this.param = param; } @Override protected Optional doExtract(HttpRequest request) { try { String s = request.getContent().toString(); String value = JSONObject.fromObject(s).getString(param); return fromNullable(new String[]{value}); } catch (Exception e) { return fromNullable(new String[]{""}); } } /** * 獲取參數的value * * @param param * @return */ public static RequestExtractor queryJson(final String param) { return new JsonExtractor(checkNotNullOrEmpty(param, "參數不能為空!")); } }
groovy使用方法如下:
/** * get請求參數是否相等 * @param key * @param value * @return */ static RequestMatcher eqArgs(String key, String value) { eq query(key), value } /** * post請求json數據參數是否相等 * @param key * @param value * @return */ static RequestMatcher eqParams(String key, String value) { eq queryJson(key), value }
groovy是一種基于JVM的動態語言,我覺得最大的優勢有兩點,第一:于java兼容性非常好,大部分時候吧groovy的文件后綴改成java直接可以用,反之亦然。java的絕大部分庫,groovy都是可以直接拿來就用的。這還帶來了另外一個有點,學習成本低,非常低,直接上手沒問題,可以慢慢學習groovy不同于Java的語法;第二:編譯器支持變得更好,現在用的intellij的ide,總體來說已經比較好的支持groovy語言了,寫起代碼來也是比較順滑了,各種基于groovy的框架工具也比較溜,特別是Gradle構建工具,比Maven爽很多。----此段文字為了撐字數強加的,與內容無關。
歡迎有興趣的童鞋一起交流
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75407.html
摘要:雖然前后端分離已經流行很多年了,仍有很多團隊不能夠充分的利用前后端分離的優勢。主要體現在前端過分依賴服務環境將高效的約定分工合作模式理解很淺。在這里推薦一種的解決方案。不支持簡潔的文件格式不符合的標準。所以使用集成,參考前后端分離方案整合 雖然前后端分離已經流行很多年了,仍有很多團隊不能夠充分的利用前后端分離的優勢。主要體現在前端過分依賴服務環境, 將高效的約定分工合作模式理解很淺。 ...
摘要:雖然前后端分離已經流行很多年了,仍有很多團隊不能夠充分的利用前后端分離的優勢。主要體現在前端過分依賴服務環境將高效的約定分工合作模式理解很淺。在這里推薦一種的解決方案。不支持簡潔的文件格式不符合的標準。所以使用集成,參考前后端分離方案整合 雖然前后端分離已經流行很多年了,仍有很多團隊不能夠充分的利用前后端分離的優勢。主要體現在前端過分依賴服務環境, 將高效的約定分工合作模式理解很淺。 ...
摘要:我在使用框架過程中,遇到一個問題,在官方文檔中給出了的方法,表示循環返回一個數組里面的,但是在查看的時候并沒有發現這個方法,所以覺得自己寫了一個,并且重寫了方法。方法主要用在請求次數相關的內容,比如訂單提交資源刪除等場景。 我在使用moco框架過程中,遇到一個問題,在官方文檔中給出了cycle的方法,表示循環返回一個數組里面的response,但是在查看API的時候并沒有發現這個cyc...
摘要:背景分析至此,下一步要解決的問題就是完成一次獨立的請求,并解析得到目標數據。上方地址欄的網址是請求的入口,中間圓角方框中的格式天津則是請求參數。當我看到中的天津時,非常開心,因為我找到了請求的入口。 概要 背景描述 網站和http請求分析 IP受限的問題 1. 背景描述 大為軟件公司于2001年9月在保定國家高新技術產業開發區注冊,公司致力于中國、日本知識產權軟件的研究開發,立志成...
摘要:當使用一個時,其中一個挑戰就是認證。在傳統的應用中,服務端成功的返回一個響應依賴于兩件事。通常包括將發送的憑證與存儲的憑證進行檢查。第一種是使用請求來通過驗證,使服務端發送帶有的響應。 做了這么長時間的web開發,從JAVA EE中的jsf,spring,hibernate框架,到spring web MVC,到用php框架thinkPHP,到現在的nodejs,我自己的看法是越來越喜...
閱讀 1439·2021-11-11 16:54
閱讀 9319·2021-11-02 14:44
閱讀 2371·2021-10-22 09:53
閱讀 3259·2019-08-30 11:18
閱讀 1951·2019-08-29 13:29
閱讀 2003·2019-08-27 10:58
閱讀 1623·2019-08-26 11:38
閱讀 3518·2019-08-26 10:31