12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import Mock from 'mockjs'
- const response = require("./serverApi.json")
- const { getSetting } = window.systemParamsUtils;
- export default mockXHR;
- export function mockXHR(){
- const baseUrl = getSetting("BASE_API")
- if (response && response.data && response.data.mocks instanceof Array) {
- response.data.mocks.map(item => {
- let reqURI = item.url ;
- if (item.url) {
- let keys = reqURI.split("?")[0].split("/")
- keys.map((key) => {
- if (key.startsWith(":")) {
- reqURI = reqURI.replace(key, "[a-zA-Z0-9_]*")
- }else if(key.startsWith("{")&&key.endsWith("}")){
- reqURI = reqURI.replace(key, "[a-zA-Z0-9_]*")
- }
- })
- }
- Mock.mock(new RegExp(baseUrl + reqURI), item.method, function (options) {
- let data;
- if (item.mode instanceof Array) {
- data = item.mode;
- } else if (item.mode instanceof Object) {
- data = item.mode
- } else {
- data = eval("(" + item.mode + ")")
- }
- const {body, url} = options
- let args = {
- query: param2Obj(url)
- }
- if(typeof body === "string" ){
- try{
- args.body =JSON.parse(body)
- }catch (e) {
- args.body = param2Obj("http://zzz?"+body)
- }
- }
- let regUrl = baseUrl + item.url;
- let reqUrlKeys = options.url.split("/");
- regUrl.split("/").map((key,index)=>{
- if(key!== reqUrlKeys[index]){
- args.query[key.substr(1)] = reqUrlKeys[index]
- }
- })
- transFunc2Data(data, args)
- return Mock.mock(data)
- })
- })
- } else {
- console.error("serverApi.json有问题!~~")
- }
- }
- function transFunc2Data(data, arg) {
- for (let key in data) {
- if (data[key] instanceof Function) {
- let tmpFn = data[key];
- data[key] = tmpFn({_req: arg, Mock})
- } else if (data[key] instanceof Object) {
- transFunc2Data(data[key], arg)
- }
- }
- }
- /**
- * @param {string} url
- * @returns {Object}
- */
- function param2Obj(url) {
- const search = url.split('?')[1]
- if (!search) {
- return {}
- }
- return JSON.parse(
- '{"' +
- decodeURIComponent(search)
- .replace(/"/g, '\\"')
- .replace(/&/g, '","')
- .replace(/=/g, '":"')
- .replace(/\+/g, ' ') +
- '"}'
- )
- }
|