在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用WireMock搭建一個HTTP模擬器

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-09 10:38 ? 次閱讀

我們開發(fā)過程中,前端和后端的開發(fā)大多是同時進行的,而前端開發(fā)需要訪問某個接口返回數(shù)據(jù)的時,我們可以使用WireMock模擬指定API返回指定測試數(shù)據(jù),這可以極大的方便我們的開發(fā)工作。今天就介紹如何使用WireMock搭建一個HTTP模擬器,并介紹一些基本案例。

1. 前言

WireMock 是一個Http 模擬服務(wù),其核心也是一個web服務(wù),WireMock主要是為特定請求提供固定的返回值。

WireMock可以作為單獨進程啟動,模擬一個WEB服務(wù)器,提供一些API訪問,并返回特定的返回值。也可以作為第三方庫在項目中使用。

下面我們先介紹以下WireMock模擬WEB服務(wù)器的使用吧。

2. WireMock搭建

  1. 第一步,先下載WireMock的Jar包, 本教程使用下載地址如下 :https://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-jre8-standalone/2.33.2/wiremock-jre8-standalone-2.33.2.jar

  2. 到指定目錄啟動Jar,同時也可以加一些啟動參數(shù)。下面的命令表示用9998端口啟動這個模擬服務(wù)器。

    java -jar wiremock-jre8-standalone-2.33.2.jar -port 9998
    

    啟動界面如下:

    圖片

3. WireMock使用

WireMock啟動時候,文件夾里面會有 _files 和 mappings 兩個文件夾, _files文件夾中可以放一些返回數(shù)據(jù)文件。mappings文件夾中存放映射關(guān)系,使用json格式的文件。

圖片

如下圖,新建json文件,啟動WireMock時回加載這些文件,更新之后只需要重啟WireMock即可。

圖片

3.1 簡單API映射

json文件如下,

{
 "mappings": [
  {
   "request": {
    "method": "GET",
    "url": "/api/hello"
   },
   "response": {
    "body": "Hello world!",
    "headers": {
     "Content-Type": "text/plain"
    },
    "status": 200
   }
  }
 ]
}

啟動后正常訪問:

圖片

如果配置的地址訪問不到也會返回錯誤,如下:

圖片

3.2 返回response中添加header

{
    "request": {
        "method": "GET",
        "url": "/whatever"
    },
    "response": {
        "status": 200,
        "headers": {
            "Content-Type": "text/plain",
            "Set-Cookie": ["session_id=91837492837", "split_test_group=B"],
            "Cache-Control": "no-cache"
        }
    }
}

3.3 返回數(shù)組

"response": {
        "status": 200,
        "jsonBody": {
          "arbitrary_json": [1, 2, 3]
        }
    }

3.4 返回指定文件數(shù)據(jù) 寫在_file文件夾里面

{
    "request": {
        "method": "GET",
        "url": "/bodyfile"
    },
    "response": {
        "status": 200,
        "bodyFileName": "/myfile.xml"
    }
}

_file文件夾下面新建的文件:

圖片

訪問接口則可以直接返回文件中的數(shù)據(jù):

圖片

3.5 URL 映射

WireMock也支持映射正則表達(dá)式:

{
  "request": {
    "urlPattern": "/your/([a-z]*)?and=query"
    ...
  },
  ...
}

3.6 指定請求頭

{
  "request": {
    ...
    "headers": {
      "Content-Type": {
        "equalTo": "application/json",
        "caseInsensitive": true
      }
    }
    ...
  },
  ...
}

3.7 可變狀態(tài)請求

requiredScenarioState/newScenarioState 可以記錄當(dāng)前API映射所處的狀態(tài)以及新的狀態(tài),可以通過改變其狀態(tài),從而可以使同一個API返回不同的結(jié)果, 如下面的請求則可以改變狀態(tài),返回不同的結(jié)果.

{
 "mappings": [
  {
   "scenarioName": "To do list",
   "requiredScenarioState": "Started",
   "request": {
    "method": "GET",
    "url": "/todo/items"
   },
   "response": {
    "status": 200,
    "body": "< items >< item >Buy milk< /item >< /items >"
   }
  },
  {
   "scenarioName": "To do list",
   "requiredScenarioState": "Started",
   "newScenarioState": "Cancel newspaper item added",
   "request": {
    "method": "POST",
    "url": "/todo/items",
    "bodyPatterns": [
     {
      "contains": "Cancel newspaper subscription"
     }
    ]
   },
   "response": {
    "status": 201
   }
  },
  {
   "scenarioName": "To do list",
   "requiredScenarioState": "Cancel newspaper item added",
   "request": {
    "method": "GET",
    "url": "/todo/items"
   },
   "response": {
    "status": 200,
    "body": "< items >< item >Buy milk< /item >< item >Cancel newspaper subscription< /item >< /items >"
   }
  }
 ]
}
  • 第一次訪問時,Started狀態(tài):
    圖片
  • 訪問第二個接口,改變其狀態(tài)如下
  • 再次訪問API,返回新的數(shù)據(jù)
    圖片

3.8 API 故障模擬

設(shè)置延時返回,如下可以設(shè)置定時延遲2秒。

{
  "request": {
   "method": "GET",
   "url": "/delayed"
  },
  "response": {
   "status": 200,
   "fixedDelayMilliseconds": 2000
  }
 }

如下是延遲2秒的返回結(jié)果。

圖片

同時也可以設(shè)置隨機的延遲時間:

{
    "request": {
        "method": "GET",
        "url": "/random/delayed"
    },
    "response": {
        "status": 200,
        "delayDistribution": {
            "type": "lognormal",
            "median": 50,
            "sigma": 0.4
    }
    }
}

總結(jié)

WireMock可以快速搭建Web服務(wù),可以模擬開發(fā)測試需要的各種請求,使用十分方便。對于維護測試環(huán)境穩(wěn)定以及提高開發(fā)效率方面都有不錯的效果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1537

    瀏覽量

    63045
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    515

    瀏覽量

    32061
  • Web服務(wù)器
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    24621
  • 模擬器
    +關(guān)注

    關(guān)注

    2

    文章

    887

    瀏覽量

    43699
收藏 人收藏

    評論

    相關(guān)推薦

    電腦pc端上安卓模擬器下載與使用教程

    安卓作為全球用戶最多的智能手機系統(tǒng),有很多好玩兒的應(yīng)用。如果你還沒有安卓手機,又想買部試試,可是價格都不便宜,買來不適合自己怎么辦?那么可以先在電腦上安裝安卓模擬器,因為它可以在
    發(fā)表于 09-10 11:56

    模擬器:904和模擬器:861錯誤

    鏈接設(shè)計。我在論壇中看到我們需要使用任務(wù)管理或進程查看來終止模擬器可執(zhí)行文件(_isim_beh.exe)。但是從哪里可以找到任務(wù)管理或進程查看
    發(fā)表于 04-03 08:47

    LVGL模擬器該怎樣去搭建

    LVGL模擬器搭建我用的是vs搭建模擬器,實際上很簡單,去下載最新的vs然后我是選擇了接下來,下載安裝。再下載官方的模擬器。就可以進行仿真
    發(fā)表于 01-18 09:31

    種多普勒模擬器的設(shè)計與實現(xiàn)The Design and I

    本文介紹了種成功應(yīng)用于某自主外測系統(tǒng)的多普勒模擬器的設(shè)計與實現(xiàn)。該模擬器易于使用,控制靈活。在系統(tǒng)聯(lián)調(diào)期間,該模擬器可進行極小步進、快速掃頻,取得了滿意
    發(fā)表于 05-25 15:14 ?33次下載

    經(jīng)濟的負(fù)責(zé)模擬器電路圖

    經(jīng)濟的負(fù)責(zé)模擬器電路圖
    發(fā)表于 07-01 13:23 ?661次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個</b>經(jīng)濟的負(fù)責(zé)<b class='flag-5'>模擬器</b>電路圖

    種新型的基于LabView設(shè)計的脈壓模擬器

    種新型的基于LabView設(shè)計的脈壓模擬器  摘   要: 提出了種新型的基于LabView設(shè)計的脈壓模擬器,介紹了其設(shè)計思想、系統(tǒng)的軟硬件構(gòu)成及應(yīng)
    發(fā)表于 12-01 10:25 ?971次閱讀
    <b class='flag-5'>一</b>種新型的基于LabView設(shè)計的脈壓<b class='flag-5'>模擬器</b>

    仿真模擬器的不同_仿真模擬器的區(qū)別簡單分析

    仿真模擬器經(jīng)常被混淆,兩者有些許相似,但是是兩不同的概念,本文為大家?guī)矸抡?b class='flag-5'>器和模擬器的區(qū)別簡單分析。
    發(fā)表于 01-05 14:27 ?8713次閱讀

    種新的微結(jié)構(gòu)模擬器設(shè)計

    處理體系結(jié)構(gòu)模擬器可以對處理的結(jié)構(gòu)采用軟件方式進行模擬,輔助處理的研究工作。通過對多種結(jié)構(gòu)和微結(jié)構(gòu)參數(shù)進行配置,可以對處理
    發(fā)表于 03-12 16:13 ?0次下載
    <b class='flag-5'>一</b>種新的微結(jié)構(gòu)<b class='flag-5'>模擬器</b>設(shè)計

    如何使用vi模擬器?

    Atmel 小貼士 vi模擬器的使用
    的頭像 發(fā)表于 07-11 00:17 ?4432次閱讀

    ADSIM模擬器

    ADSIM模擬器
    發(fā)表于 03-23 13:50 ?15次下載
    ADSIM<b class='flag-5'>模擬器</b>

    真正的Arduino UNO電子寵物模擬器

    電子發(fā)燒友網(wǎng)站提供《真正的Arduino UNO電子寵物模擬器.zip》資料免費下載
    發(fā)表于 10-21 10:16 ?1次下載
    <b class='flag-5'>一</b><b class='flag-5'>個</b>真正的Arduino UNO電子寵物<b class='flag-5'>模擬器</b>

    電路仿真模擬器怎么用

    電路仿真模擬器是電子工程師和學(xué)生必備的類軟件工具。通過使用電路仿真模擬器,用戶可以在計算機上模擬和分析各種電路設(shè)計,從而避免在實際搭建電路
    的頭像 發(fā)表于 05-04 10:53 ?3069次閱讀

    華納云:使用 WireMock 在開發(fā)和測試中模擬 API 服務(wù)

    WireMock 發(fā)揮作用的地方。 WireMock開源工具,可以幫助開發(fā)人員創(chuàng)建模擬真實 API 行為的
    的頭像 發(fā)表于 10-25 16:46 ?615次閱讀

    如何使用光伏模擬器

    光伏模擬器種用于模擬太陽能光伏電池工作原理和性能的軟硬件設(shè)備。它能夠提供光伏電池在不同光照、溫度和環(huán)境條件下的電流、電壓、功率等參數(shù),用于測試和評估光伏電池的性能,并幫助開發(fā)、優(yōu)化和驗證光伏系統(tǒng)
    的頭像 發(fā)表于 10-30 17:12 ?527次閱讀
    如何使用光伏<b class='flag-5'>模擬器</b>

    電網(wǎng)模擬器工作原理淺析

    主要由以下幾個關(guān)鍵部分組成:模擬電源、模擬負(fù)載、測量系統(tǒng)和控制系統(tǒng)。 ? 1、模擬電源: 模擬電源是電網(wǎng)模擬器的核心部分,它能夠產(chǎn)生與實際電
    的頭像 發(fā)表于 01-09 16:58 ?456次閱讀
    主站蜘蛛池模板: 免费观看四虎精品国产永久 | 国产精品综合色区在线观看 | 午夜久久久久久 | 日本高清高色 | 五月天在线播放 | 国产精品免费看久久久久 | 国产手机在线国内精品 | 亚洲人成伊人成综合网久久 | 亚洲理论视频 | 免费看片aⅴ免费大片 | 伊人色强在线网 | 午色| 在线观看深夜观看网站免费 | 黄免费看 | 欧美性另类69xxx | 久久久免费视频播放 | ts国产 | 色aaa| 色拍拍综合网 | 同性同男小说肉黄 | 男男浪荡性受高hnp肉 | 噜色| 高黄网站 | 欧美日本免费 | 国产成年女一区二区三区 | 国产一级特黄生活片 | 粉嫩尤物在线456 | 日本欧美午夜 | 欧美7777kkkk免费看258 | 亚洲综合在线最大成人 | 天堂免费视频 | 国产免费色视频 | 欧美xxxx性高清 | 天天射天天干天天色 | 午夜性a一级毛片 | 亚洲黄色高清视频 | 久久夜夜操妹子 | 日本三黄色大 | 日韩高清性爽一级毛片免费 | 濑亚美莉iptd619在线观看 | 色综合网址 |