思考:在線(xiàn)mock平臺(tái)是怎么實(shí)現(xiàn)的

如果你使用過(guò)mock在線(xiàn)平臺(tái),不知道你是否也有過(guò)這種思考?當(dāng)我們?cè)O(shè)置完項(xiàng)目 -> 添加訪(fǎng)問(wèn)接口 -> 配置返回值這樣的操作后,就會(huì)得到一個(gè)地址,我們?cè)谑褂胮ostMan模擬請(qǐng)求就會(huì)得到相應(yīng)的值,就像這樣:

image.png
  • 以前在開(kāi)發(fā)后臺(tái)的時(shí)候,養(yǎng)成了一個(gè)習(xí)慣,就是參數(shù)都是通過(guò) ? 拼接在請(qǐng)求路徑后面的,就像這樣xxx/test-get?id=111&name=222,所以在我的印象中,帶/的一般是路徑,問(wèn)號(hào)后面的才是參數(shù),就是這個(gè)固有印象讓我產(chǎn)生的這個(gè)思考,難道上面的請(qǐng)求接口都是對(duì)應(yīng)的后臺(tái)不同的路徑映射???這怎么可能?想了一些時(shí)間后忽然想起RestFul風(fēng)格的編碼方式,原來(lái)上面的路徑從/mock開(kāi)始,后面的每個(gè) / 都是一個(gè)查詢(xún)參數(shù)。

  • 就比如,上面的請(qǐng)求地址,可以拆分成:

    https://www.fastmock.site/mock/    <--- 請(qǐng)求地址,真正的在后臺(tái)開(kāi)啟的映射
    165a9445f9a756c0090ff81498d2bb13  <--- 參數(shù)1:項(xiàng)目地址
    images   <--- 參數(shù)2,文件夾地址(可能是)
    test-get <--- 參數(shù)3,路徑地址
    
  • 假設(shè)當(dāng)你發(fā)起GET請(qǐng)求,此時(shí)就會(huì)請(qǐng)求到后臺(tái)的GET方法上的https://www.fastmock.site/mock/映射,并且會(huì)接收到后面三個(gè)參數(shù),根據(jù)后面三個(gè)參數(shù)去數(shù)據(jù)庫(kù)里查詢(xún),就可以得到唯一的一串信息,最后將其JSON格式化后返回給前臺(tái)即得到上面的效果。

  • 這不是什么新技術(shù),就是RestFul方式傳參而已。

  • 其實(shí)自己是知道RestFul風(fēng)格的,符合REST約束風(fēng)格和原則的應(yīng)用程序或設(shè)計(jì)就是RESTful。對(duì)于各種請(qǐng)求的風(fēng)格類(lèi)似下面風(fēng)格:

    /emp/1  HTTP GET      查詢(xún)id=1的emp
    
    /emp/1  HTTP DELETE    刪除id=1的emp,實(shí)驗(yàn)中直接刪除會(huì)報(bào)405錯(cuò)誤,但是采用$.ajax異步刪除就沒(méi)問(wèn)題
    
    /emp/1  HTTP PUT    跟新emp
    
    /emp/add  HTTP POST     新增emp
    
  • 基于以上的思想,我們?cè)O(shè)計(jì)一個(gè)最簡(jiǎn)單的在線(xiàn)Mock平臺(tái),其功能實(shí)現(xiàn)簡(jiǎn)圖就像下面這樣:


    image.png
    • 我們從開(kāi)始開(kāi)始,我們先新建項(xiàng)目(project),就得到一個(gè)project_id,假設(shè)是123
    • 在項(xiàng)目中我們新建一個(gè)請(qǐng)求url,比如是一個(gè)GET請(qǐng)求,路徑是/test-get,我們選擇實(shí)現(xiàn)的數(shù)據(jù)類(lèi)型是手動(dòng),此時(shí)我們填入需要返回的數(shù)據(jù)體:{"test":"111"},此時(shí),一個(gè)模擬的url已經(jīng)創(chuàng)建好了,我們點(diǎn)擊保存,即保存到了數(shù)據(jù)庫(kù)中。數(shù)據(jù)庫(kù)表結(jié)構(gòu)在后面。此時(shí)我們就得到了一個(gè)以后可以請(qǐng)求的路徑,www.xx.com/mock/123/test-get。
    • 此時(shí),我們使用PostMan即可模擬GET請(qǐng)求www.xx.com/mock/123/test-get,我們后端接口的映射是/mock/:project-id/:url,這是node的express方式,Spring等其他框架請(qǐng)自行轉(zhuǎn)換。請(qǐng)求到接口后就得到了兩個(gè)參數(shù):projectId和url,其實(shí)還有一個(gè)默認(rèn)的參數(shù),就是method:GET,接著去按這三個(gè)值去數(shù)據(jù)庫(kù)查詢(xún)即可得到唯一的返回值:{"test":"111"},此時(shí)該流程就結(jié)束了。
      數(shù)據(jù)庫(kù)大致表結(jié)構(gòu)

以上流程就是最簡(jiǎn)單的進(jìn)行了一下構(gòu)思,其實(shí)如果做起來(lái),肯定還有一些不完善的地方,由于時(shí)間特殊,這個(gè)就不去實(shí)現(xiàn)了,有興趣的話(huà)大家一起溝通呦~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容