mock.js服務器(mock平台服務器)

  • 1、vue中使用mockjs簡單返回數據、包括get,post請求
  • 2、mock.js的使用方法
  • 3、Mock.js使用
  • 4、mock.js 原生ajax多次請求
  • 5、mockjs如何攔截jsonp請求
  • 6、mock.js與其他有什麼區別

 1、安裝

    npm install mockjs

2、在src文件下

    創建mock文件夾

        在mock文件夾下創建json文件 並在json文件夾下創建index.json

        在mock文件下創建mock.js文件

3、在mian.js文件中引用mock.js        

    import “./mock/mock.js”;

    mock.js文件中的內容

    “`

    import Mock from ‘mockjs’

    Mock.setup({

         timeout: 500 //設置一個延遲時間虛擬服務器響應效果

     })

//格式: Mock.mock( url, post/get , 返回的數據); Mock.mock(‘/getList’, ‘get’, require(‘./json/index.json’))

// 通過Mock.mock函數模擬post請求

Mock.mock(‘/api/addgoods’, ‘post’, function (option) {

 // 這裡的option是請求的相關參數

var $name=JSON.parse(option.body).name;

if($name){

    return Mock.mock({

        status: 200,

        message: ‘提交成功!!!’

    })

}else{

    return Mock.mock({

        status: 400,

        message: ‘未提交參數’

    })

}

})

  “`

index.json文件中的內容

“`

{

   “retcode”: “0000”,

  “retmsg”: “成功”,

  “data”: [

    {

      “tabId”: 1,

      “tabShowName”: “推薦”,

      “tabName”: “recommend”

    },

    {

      “tabId”: 2,

      “tabShowName”: “7×24”,

      “tabName”: “7×24”

    },

    {

      “tabId”: 3,

      “tabShowName”: “觀點”,

      “tabName”: “opinion”

    }

  ]

“`    

3、發送請求並獲取數據此處用的是axios

    方式一:發送get請求

    “`

    this.$axios.get(‘/getList’).then((res)={

        console.log(res)

    })

    “`

    方式二:發送post請求

    “`

      var  data={

        name:”張三”

      }

  this.$axios.post(“/api/addgoods”,data).then(res={

        console.log(res,”MOCK __ POST”)

  })

    “`

4、附上官網鏈接

 

5、目錄結構

6、完結?

在開發過程中,有很多的ajax請求,前後端分離開發你肯定遇到這樣的問題,後台給你的接口文檔,你需要在本地模擬數據返回,可能你也用到過我之前用的蠢方法,就是新建一個test.json文件,放入接口文檔中寫的返回示例,這麼做有個很大的問題是不夠靈活,而且還需要切換url,現在學會使用mock.js攔截ajax請求,更加方便的構造你需要的假數據。

在這裡我舉的例子是在vue項目中如何使用mock.js。

這裡我舉例最常用的格式

Mock.mock(url,data);

url用正則寫,這樣get請求傳參時,也能攔截數據了。

不設置延時很有可能遇到坑,這裡需要留意,因為真實的請求是需要時間的,mock不設置延時則是馬上拿到數據返回,這兩個情況不同可能導致在接口聯調時出現問題。所以最好要先設置延時請求到數據。

生成規則和示例:

Mock.Random 提供的完整方法(佔位符)如下:

Mock.js 是用來模擬產生一些虛擬的數據,可以讓前端在後端接口還沒有開發出來時獨立開發。我們可以使用真實的url,mockjs可以攔截ajax請求,返回設定好的數據。

可以在src目錄下新建mock文件夾,新建index.js文件。在index.js文件中建立虛擬數據。

如果需要使用虛擬數據,就在main.js入口文件中導入mockjs文件。

Mock.setup( settings ): 配置攔截 Ajax 請求時的行為。

Mock.mock( template ): 根據數據模板生成模擬數據。template表示數據模板,可以是對象或字符串。數據模板中的每個屬性由 3 部分構成:屬性名、生成規則、屬性值。

‘name|rule’: value : 屬性名 name、生成規則 rule、屬性值 value。屬性名 和 生成規則 之間用豎線 | 分隔。

‘name|min-max’: array: 當屬性值是數組 Array。通過重複屬性值 array 生成一個新數組,重複次數大於等於 min,小於等於 max。

‘name|+1’: number: 當屬性值是數字 Number。屬性值自動加 1,初始值為 number。

佔位符: 用 @ 來標識其後的字符串是 佔位符。佔位符 引用的是 Mock.Random 中的方法。

@cname: 隨機生成一個常見的中文姓名。

@ctitle( min, max ): 隨機生成一句中文標題。默認值為 3 到 7 之間的隨機數。

@integer( min, max ): 返回一個隨機的整數。min是最小值,max是最大值。

Mock.mock( rurl, rtype, function( options ) ): 記錄用於生成響應數據的函數。當攔截到匹配 rurl 和 rtype 的 Ajax 請求時,函數 function(options) 將被執行,並把執行結果作為響應數據返回。

此時,前台向後台發送請求,會獲取到mokejs虛擬數據,而不是真實的後台數據。

1. 檢查Mock.mock當中的數據模板定義是否正確。如:”number|+1″,Mock.mock(‘@date’)等帶有隨機數據。

2. 檢查數據返回部分是否根據參數不同返回不同的數據。如:pageList=mockList.filter(…)。

談下遠程字體跨域的問題。

直接了當了說,解決此類問題,最直接的方法就是,就是給被請求的服務器,添加HTTP頭響應頭,這裡提供兩種添加HTTP頭的方法:

第一種,就是在程序中添加HTTP頭:

如: Response.Headers.Add(“Access-Control-Allow-Origin”, “*”);

// JSON

{

‘Access-Control-Allow-Origin’: ‘*’,

}

// HTML

meta http-equiv=”Access-Control-Allow-Origin” content=”*”

// PHP

header(“Access-Control-Allow-Origin: *”);

header(“Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept”);

添加此段代碼的目的很簡單,也就是告訴瀏覽器,這個資源是運行遠程所有域名訪問的。當然,此處的*也可以替換為指定的域名,出於安全考慮,建議將*替換成指定的域名。

第二種,就是在服務器上,添加HTTP響應頭。在這裡,我們就以IIS6.0為例:

在被請求的網站上,設置HTTP頭,添加「

//在被請求的網站上,設置HTTP頭,添加

“Access-Control-Allow-Origin:*” //值為*或指定的域名。

第三種,使用JSONP格式,即在jQuery中ajax請求參數dataType:’JSONP’:

script

$.ajax({

url:”;lng=113.93832783228″,

type:’GET’,

dataType:’JSONP’,  // 處理Ajax跨域問題

success: function(data){

$(‘body’).append( “Name: ” + data );

}

});

/script

一般完成以上工作,就可以了。網上還有說在被請求服務器根目錄下創建:”crossdomain.xml”的文件。內容格式如下:

?xml version=”1.0″?

cross-domain-policy

allow-access-from domain=”*” /

/cross-domain-policy

網頁鏈接

相對於其他同類的框架的實現,mock.js超出了我的意料。

基於 數據模板 生成模擬數據。

基於 HTML模板 生成模擬數據。

攔截並模擬 ajax 請求。

是的,mock.js只做上述的幾件事,但做的足夠出色。

解決的問題

開發時,後端還沒完成數據輸出,前端只好寫靜態模擬數據。

數據太長了,將數據寫在js文件里,完成後挨個改url。

某些邏輯複雜的代碼,加入或去除模擬數據時得小心翼翼。

想要儘可能還原真實的數據,要麼編寫更多代碼,要麼手動修改模擬數據。

特殊的格式,例如IP,隨機數,圖片,地址,需要去收集。

超爛的破網速…

以上都不再是問題

接下來體驗 攔截ajax請求並返回模擬數據。

步驟1 – 安裝

安裝太簡單,跳過

步驟2 – 配置模擬數據

Mock.mock(”, {

   ‘name’   : ‘[@name](/user/name)()’,

   ‘age|1-100’: 100,

   ‘color’   : ‘[@color](/user/color)’});

步驟3 – 發送ajax請求(jquery版)

$.ajax({

   url: ”,}).done(function(data, status, xhr){

   console.log(

       JSON.stringify(data, null, 4)

   )    })

步驟4 – 查看響應的結果

// 結果1{

   “name”: “Elizabeth Hall”,

   “age”: 91,

   “color”: “#0e64ea”}// 結果2{

   “name”: “Michael Taylor”,

   “age”: 61,

   “color”: “#081086”}

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/126388.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:08
下一篇 2024-10-03 23:08

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python能否跨平台

    Python作為一門高級編程語言,是一種跨平台的編程語言。下面從多個方面探討Python能否跨平台。 一、Python的跨平台性 Python可以在Windows、Linux、Ma…

    編程 2025-04-29
  • 服務器安裝Python的完整指南

    本文將為您提供服務器安裝Python的完整指南。無論您是一位新手還是經驗豐富的開發者,您都可以通過本文輕鬆地完成Python的安裝過程。以下是本文的具體內容: 一、下載Python…

    編程 2025-04-29
  • STUN 服務器

    STUN 服務器是一個網絡服務器,可以協助網絡設備(例如 VoIP 設備)解決 NAT 穿透、防火牆等問題,使得設備可以正常地進行數據傳輸。本文將從多個方面對 STUN 服務器做詳…

    編程 2025-04-29
  • 解決docker-compose 容器時間和服務器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與服務器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • 兼職程序員外包平台的開發與實現

    隨着社會經濟和科技的快速發展,更多人選擇通過互聯網進入編程行業。兼職開發已成為一種新型就業方式,並且這種方式在新冠肺炎疫情襲來、大規模遠程辦公的背景下更為普遍。本文將從多個方面詳細…

    編程 2025-04-28
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • 如何選擇MySQL服務器文件權限

    MySQL是一種流行的關係型數據庫管理系統。在安裝MySQL時,選擇正確的文件權限是保證安全和性能的重要步驟。以下是一些指導您選擇正確權限的建議。 一、權限選擇 MySQL服務器需…

    編程 2025-04-27

發表回復

登錄後才能評論