6.sf-mock之路徑其它寫法以及更多配置 設置 cookie 設置 http 狀態碼 延遲返回 區分方法 通過 json 或 js 存儲數據

useDirMode 模式已經符合大多數場景的要求,但是一些特殊場景還是需要了解其它寫法

下面的例子涉及的配置只能寫在 example-mock-api.js 中,useDirMode 模式生成的 js 文件只是用來返回數據的。

example 下存在很多例子

獲取請求中的參數

不區分請求方法

    "/api/function/params": {
      body: (data) => {
        return {
          params: data.params,
          message: "自動解析參數並注入,可以操作request、response",
        };
      },
    },

localhost:9192/example/api/function/params?name='寒冰射手' 將返回

{
    params: {
        name: "寒冰射手"
    },
    message: "自動解析參數並注入,可以操作request、response"
}

設置 cookie

登錄態的維持如果通過 cookie 可以通過這種方式解決

    "/api/cookies": {
      response: {
        getCookies(data = {}) {
          return {
            method: data.method,
          };
        },
      },
      body: {
        message: "其餘屬性程序會自動設置",
      },
    },

`{method: data.method};method 是 cookie 的 name,'data.method'是 cookie 的值,其餘屬性 mock 服務器會自己設置

可以返回多個

設置 http 狀態碼

默認狀態碼是 200 的,可以返回其它的。

    "/api/statusCode": {
      response: {
        statusCode: 500,
      },
      body: {
        color: "red",
      },
    },

延遲返回

mock 服務器返回接口是很快的,對於一些加載狀態調試可能不方便,可以設置接口延遲返回

    "/api/delay": {
      response: {
        delaySeconds: 3,
      },
      body: {
        message: "這個是一個延遲返回",
      },
    },

在 defaultConfig.js 中有如下配置,可以統一調節

    mockData: {
      response: {

        delaySeconds: 0,
      },

    },

動態路徑

目前使用動態路徑只能將數據寫在 example-mock-api.js 內部

    "/api/regexp/url/(\\w+)/(\\d+)$": {
      // /api/regexp/url/name/200
      body: (data) => ({
        color: "red",
        message: "會返回url上的參數",
        execResults: data.execResults,
      }),
      options: {
        supportRegexp: true,
      },
    },

(\w+) 的左右括號可以不加,加上後就可以讀取參數了,例如 http://localhost:9192/example/api/regexp/url/name/200,返回結果是


{
    color: "red",
    message: "會返回url上的參數",
    execResults: [
        "/api/regexp/url/name/200",
        "name",
        "200"
    ]
}

區分方法

mock 服務器在處理請求的時候,默認是不區分方法的,即 get、post 這些,在 defaultConfig.js 中有

    mockData: {
      options: {
        //匹配時忽略請求的方法
        ingoreMethod: true,
      },
    },

區分請求方法配置如下

    "/api/method": {
      body: {
        get: {
          color: "red",
          message1: "方法指的是request支持的方法",
          message2: "返回數據支持全部簡單模式",
        },
      },
      options: {
        ingoreMethod: false,
      },
    },

通過 json 或 js 存儲數據

useDirMode 模式主要是不想把數據都寫在 example-mock-api.js 中,不用該模式也有一些方式可已處理這個問題

    "/api/function/json": {
      body: (data) => {
        return "hero.json";
      },
    },
    //js文件
    "/api/js": {
      body: "able.js",
    },
    "/api/js/method": {
      body: {
        get: "able.js",
      },
      options: {
        ingoreMethod: false,
      },
    },

able.js 內容如下

(function () {
  return (data) => {
    return {
      params: data.params,
      message: "除了把邏輯單獨提取外,功能上和直接寫函數是一樣的",
    };
  };
})();

項目地址: https://github.com/xiaodun/sf-mock

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章