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