Skip to content

Commit 45166fa

Browse files
committed
update
1 parent b712f7b commit 45166fa

File tree

4 files changed

+93
-43
lines changed

4 files changed

+93
-43
lines changed

README.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,16 +195,31 @@ mockData 属性, 存放客户端请求api时的返回数据, 以及对返回数
195195
* @param {object} params 请求参数
196196
* @param {any} result 默认返回结果的副本
197197
* @desc relay 可以是一个url字符串
198-
* @returns 参数数组, 会通过 apply 传给 request 模块, 参数说明参考 request 模块, (预置了最后一个函数参数, 建议不要传这个参数) request中的传参字段: get为qs, post为form
198+
* @returns string/object/array
199199
*/
200200
relay: (method, params, result) => {
201-
return ['url', {}, () => {}]
201+
let url = ''
202+
// 返回值用于给 request 模块传参, 调用逻辑:
203+
// request.apply(request, Array.isArray(returns) ? returns : [returns])
204+
// request中的传参字段: get为qs, post为form
205+
return url
206+
// return {
207+
// url,
208+
// [/post/i.test(method) ? 'form' : 'qs']: {
209+
// test: 123
210+
// }
211+
// }
212+
// return [url, {
213+
// [/post/i.test(method) ? 'form' : 'qs']: {
214+
// test: 123
215+
// }
216+
// }]
202217
},
203218

204219
// 请求方法, 返回数据
205220
// 返回数据可以使用 mockjs 来填充数据, 也可以直接写json
206221

207-
// 请求方法为函数时, 参数与其它方法一致, 但result为空对象, 返回值作为返回数据
222+
// 请求方法为函数时, 参数与format/error/ralay等方法一致, 但result为空对象, 返回值作为返回数据
208223
// get: (method, params, result) => {}
209224
get: {
210225
// ...

index.js

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,37 @@ var getInfo = function (req, option, headers) {
186186
option.crossDomain ? headers : {}), option.headConfig)
187187
};
188188
};
189+
var formatResult = function (_a) {
190+
var data = _a.data, method = _a.method, params = _a.params, result = _a.result;
191+
try {
192+
result = JSON.parse(JSON.stringify(typeof data[method] == 'function'
193+
? data[method](method, params, result)
194+
: data[method] instanceof Object
195+
? data[method]
196+
: {}));
197+
}
198+
catch (e) {
199+
result = {};
200+
}
201+
if (!(result instanceof Object)) {
202+
result = {};
203+
}
204+
return result;
205+
};
189206
var mockResult = function (result) {
190207
return result instanceof Object ? Mock.mock(result) : result;
191208
};
209+
var authHandler = function (_a) {
210+
var http = _a.http, data = _a.data, option = _a.option, urlKey = _a.urlKey, headConfig = _a.headConfig;
211+
if (urlKey !== option.loginUrl && option.bounded && !data.public && !auth.verify()) {
212+
http.writeHead(401, headConfig);
213+
http.end({
214+
code: 401,
215+
message: urlKey && urlKey === option.logoutUrl ? '退出失败' : '权限不足, 请先登录'
216+
});
217+
return false;
218+
}
219+
};
192220
var errorHandler = function (_a) {
193221
var url = _a.url, http = _a.http, data = _a.data, method = _a.method, params = _a.params, result = _a.result, headConfig = _a.headConfig;
194222
if (typeof data.error === 'function') {
@@ -345,23 +373,6 @@ var createServer = function (option, callback) {
345373
createServer(option, callback);
346374
});
347375
};
348-
var formatResult = function (_a) {
349-
var data = _a.data, method = _a.method, params = _a.params, result = _a.result;
350-
try {
351-
result = JSON.parse(JSON.stringify(typeof data[method] == 'function'
352-
? data[method](method, params, result)
353-
: data[method] instanceof Object
354-
? data[method]
355-
: {}));
356-
}
357-
catch (e) {
358-
result = {};
359-
}
360-
if (!(result instanceof Object)) {
361-
result = {};
362-
}
363-
return result;
364-
};
365376
/**
366377
* 启动mock服务
367378
* @func
@@ -424,6 +435,10 @@ var Server$1 = function (option, callback) {
424435
return;
425436
}
426437
// 3. 处理错误
438+
if (authHandler(allOption) === false) {
439+
return;
440+
}
441+
// 3. 处理错误
427442
if (errorHandler(allOption) === false) {
428443
return;
429444
}

src/server.ts

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import auth from './auth';
44
import config from './config';
55
import rules from './rules';
66
import * as https from 'https';
7-
import { getInfo, mockResult, Http, errorHandler, relayHandler, methodHandler } from './utils'
7+
import { Http, getInfo, formatResult, mockResult, authHandler, errorHandler, relayHandler, methodHandler } from './utils'
88
import * as fs from 'fs';
99
const server = jsonServer.create()
1010
// 路径从根目录开始?
@@ -43,27 +43,6 @@ const createServer = (option: anyObject, callback?: Function) => {
4343
createServer(option, callback)
4444
})
4545
}
46-
const formatResult = ({
47-
data, method, params, result
48-
}) => {
49-
try {
50-
result = JSON.parse(
51-
JSON.stringify(
52-
typeof data[method] == 'function'
53-
? data[method](method, params, result)
54-
: data[method] instanceof Object
55-
? data[method]
56-
: {}
57-
)
58-
)
59-
} catch (e) {
60-
result = {}
61-
}
62-
if (!(result instanceof Object)) {
63-
result = {}
64-
}
65-
return result
66-
}
6746

6847
/**
6948
* 启动mock服务
@@ -138,6 +117,8 @@ const Server = (option: anyObject, callback?: Function) => {
138117
return
139118
}
140119
// 3. 处理错误
120+
if (authHandler(allOption) === false) { return }
121+
// 3. 处理错误
141122
if (errorHandler(allOption) === false) { return }
142123
// 4. 处理转发请求
143124
if (relayHandler(allOption) === false) { return }

src/utils.ts

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,47 @@ export const getInfo = (req, option, headers) => {
3535
)
3636
}
3737
}
38+
export const formatResult = ({
39+
data, method, params, result
40+
}) => {
41+
try {
42+
result = JSON.parse(
43+
JSON.stringify(
44+
typeof data[method] == 'function'
45+
? data[method](method, params, result)
46+
: data[method] instanceof Object
47+
? data[method]
48+
: {}
49+
)
50+
)
51+
} catch (e) {
52+
result = {}
53+
}
54+
if (!(result instanceof Object)) {
55+
result = {}
56+
}
57+
return result
58+
}
59+
3860
export const mockResult = (result) => {
3961
return result instanceof Object ? Mock.mock(result) : result
4062
}
41-
63+
export const authHandler = ({
64+
http,
65+
data,
66+
option,
67+
urlKey,
68+
headConfig
69+
}) => {
70+
if (urlKey !== option.loginUrl && option.bounded && !data.public && !auth.verify()) {
71+
http.writeHead(401, headConfig)
72+
http.end({
73+
code: 401,
74+
message: urlKey && urlKey === option.logoutUrl ? '退出失败' : '权限不足, 请先登录'
75+
})
76+
return false
77+
}
78+
}
4279
export const errorHandler = ({
4380
url,
4481
http,
@@ -175,7 +212,9 @@ export const methodHandler = ({
175212
export default {
176213
Http,
177214
getInfo,
215+
formatResult,
178216
mockResult,
217+
authHandler,
179218
errorHandler,
180219
relayHandler,
181220
methodHandler

0 commit comments

Comments
 (0)