在前后端分離中如何優雅的模擬數據

目前應該大部分公司都采用前后端分離的方案吧,然后在開發聯調和自測的過程中難免會遇到各種情況需要后端給你各種情況的數據來觸發各種場景。這種時候就需要 一種可以在不影響開發并且可以讓你可以得到各種所需要的數據的解決方案了~
那么目前想到的方案

方案1 直接修改字段屬性

強行進入所場景這種方案在如果只是改一個字段的true或者false那么還好 但是如果在需要多個數據的修改才能觸發的場景,那么修改成本大概就有點高了吧=。= 而且有可能因為忘記了而導致線上出問題

    //比如 有一個三級的狀態 由于需要修改stage = 2 round = 3 team = 3的情況就要在代碼中這么到處修改
    data(){
        return {
            //stage: 1,
            stage: 2
            ...
            //round: 2
            round: 3,
            //team: 1,
            team: 3
        }
    }

這方法優點是夠簡單暴力,但是弊端也很明顯 容易遺漏,在一般非請求的情況可能會用到,不過就算是非請求通過組織好代碼流程也能用更好的方法解決,這里就不討論了

方案2 在接口處寫入一段假數據

這種方案好處就是只要在success處寫一段假數據 就能進入需要的場景并且也不需要后端給到你需要場景的數據,只要能接口通了就可以,但是還是有一個問題 就是首先得后端先有接口=。= 按我的經驗... 后端大佬一般都沒這么快能給你接口 有文檔已經很不錯了~

    axios.get('xxx').then(res => {
       // this.info = res.data.info
       this.info = {
           nickname: '魯路修·Vi·不列顛尼亞',
           age: 18,
           sex: 'gay'
       }
    })

還是上面的問題,因為模擬數據寫了在業務代碼里面了,就存在可能人為因素忘記刪掉不該有的代碼的問題,而且這辦法也太辣雞了點,不優雅

好了,上面兩條比較簡單的做法可以總結出來 數據不能在業務代碼中模擬 不然很容易出現問題

那么如何在不影響業務代碼的情況下 通過自己模擬數據達到前端自己實現后端數據呢~

方案3 封裝請求接口 在請求處實現mock邏輯

在實現邏輯的時候,難免會有各種ajax請求或者什么請求之類的 那么如果在代碼中各種請求滿天飛 那不是感覺很辣雞嘛... 那么就把所以請求的url集中起來管理,把請求頭通過一個統一的變量管理起來。通過封裝一個API的類來管理你的所有API,只要調用API的方法就可以實現請求了。然后既然API的類也有了,通過改造API類里面的對應url里面的方法,在對應方法里面寫mock數據,就能做到不影響業務邏輯的情況下實現mock數據了~

     比如 
     //App.vue
     APIS.getUserInfo()
     .done(res => {
         //業務邏輯
     })
     .fail(err => {
         //錯誤處理
     })

     //apilist.js
     getUserInfo(data, params){
         return this.mock({
             code: 0,
             data: {
                 xxx: 1,
                 bbb: 2
             }
         })
     }

講道理這個方法其實就是模仿我們大佬實現的api的封裝方案噠~ 最近看了一下感覺好像有點jq的ajax寫法的感覺哦 也不知道他是不是也是從那里拿靈感的 不知道他看到了會不會找我談心呢 具體ajax怎么封裝就不寫出來了~

方案4 本地實現服務端接口返回對應數據

雖然方案3已經可以很大程度避免由于模擬數據影響業務邏輯了,但是如果有方法可以完全不影響項目代碼是不是更好呢?

    //server.js
    const app = express();
    ...
    app[url_data.methods](url, (req, res) => {
        vailedHandle(url_data.vailed, url_data.methods === 'get'?req.query:req.body, url_data.mock(), res);
    });
    ...
    
    //project mock
    const index = {
        'xxx/getUserInfo': {
            mock: () => {
                return mock.mock({
                     code: 0,
                     data|1-9 :[{
                          'nickname|5-8': /[a-zA-Z]/,
                          'age|0-99': 20
                     }]    
               }),
               ...
            }
        }
    }

由于最近學習了一丟丟node相關的知識哦,正好就可以練練手了~ 通過express和mockjs組合,在另外一個端口實現一個本地服務器,通過請求本地服務返回對應接口實現模擬數據,由于我們只需要接口,邏輯什么都不必管,所以只需要在mock的數據里面修改一下就能拿到需要的數據并且不必擔心影響原本項目,是不是瞬間覺得高端了不少,具體api接口內容和鏈接 其實可以通過node爬去你們的api文檔的內容自動生成,也可以通過自己封裝返回請求的邏輯實現報錯管理,感覺各種優化下去的話自己實現一個mock平臺也好像可以哦!

總結

個人感覺方案3 和 方案4 都是很好的實踐方法,而且對于代碼的組織和和管理都很方便,作為專業的搬運工,在別的項目中也只需要copy一份封裝好的代碼改改url又是一個嶄新的項目了哦~ 并且既然上一個項目已經通過qa測試那么代碼肯定是安全的~可以放心服用,當然了如果有追求的話也可以把這份代碼做的更加通用,用更好的方法去統一調用那就棒棒噠

嗯,當然這只是在這一年工作碰到的在聯調上的問題和一些總結,因為最近聽了某個live的雞湯就想寫寫文章,也算是對自己知識點的一些些總結,如果有更好的方案或者有不對的地方歡迎指出來~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374

推薦閱讀更多精彩內容