|
- /*
- 新版很多接口只是改了接口名字,参数和请求类型并没有修改,只需要建立一个map来处理这个改动就行。
- */
- const normalRequestMap = {
-
- }
- // 有些url里面包含了可变的参数,需要遍历一遍,用正则找到对应的url
- const paramRequestOldUrlArray = [
- // /\/api\/v1\/careers\/(\w*)\/edit/i,
- // /\/api\/v1\/games\/(\w*)\/rep_content/i,
-
- // /api/v1/games/rwvl6htgoufi/entries
- // /\/api\/v1\/games\/(\w*)\/entries/i,
-
- // `/api/v1/games/${game.identifier}/choose_build`
- /\/api\/v1\/games\/(\w*)\/choose_build/i
-
- ]
- const paramRequestNewUrlArray = [
- // 获取代码内容
- // (matchResult) => {
- // const stageId = matchResult[1]
- // return `/tasks/${stageId}/rep_content.json`
- // },
-
- // 获取版本库目录、文件
- // http://testeduplus2.educoder.net/tasks/se79x25pzfwo/git_entries.json?path=&dev=master&gpid=3441
- // (matchResult) => {
- // const stageId = matchResult[1]
- // // return `/tasks/${stageId}/git_entries.json`
- // return `/myshixuns/${stageId}/repository.json`
- // },
-
- // `/tasks/tonblikwzj78/choose_build.json`
- (matchResult) => {
- const stageId = matchResult[1]
- return `/tasks/${stageId}/choose_build.json`
- },
- ]
- export function requestProxy(config) {
- // return config;
- const url = config.url;
- if (url.indexOf('.json') !== -1) { // 已经是新接口了
- return config;
- }
-
- // TODO 为true的话会报错 Error: Network Error
- config.withCredentials = false;
-
- const oldUrlSplitPathArray = url.split('?');
- let oldPath = oldUrlSplitPathArray[0]
- let newPath, newUrl;
- newPath = normalRequestMap[oldPath];
- if (!newPath) { // 是带参的restful风格的url
- paramRequestOldUrlArray.forEach((item, index) => {
- const matchResult = oldPath.match(item);
- if (matchResult) { // 找到了对应的restful api url
- const newUrlGenerator = paramRequestNewUrlArray[index];
- newPath = newUrlGenerator && newUrlGenerator(matchResult)
-
- newUrl = `${newPath}?${oldUrlSplitPathArray[1]}`
- config.url = newUrl
- return config;
- }
- });
- }
- return config;
- }
-
- /**
- ('/api/v1/careers/qweqw/edit/').match(/\/api\/v1\/careers\/(\w*)\/edit/i)
- 0: "/api/v1/careers/qweqw/edit"
- 1: "qweqw"
-
- example:
- `/api/v1/games/${this.props.game.identifier}/answer_grade` ->
- `/tasks/${this.props.game.identifier}/answer_grade.json`
-
-
- https://testeduplus2.educoder.net/api/v1/games/feguz4tiqpvx/rep_content
- ?path=src/step2/CLnkQueue.cpp&shixun_gpid=2791&status=0&retry=0 ->
- http://testeduplus2.educoder.net/tasks/tonblikwzj78/rep_content.json
- ?path=1-4.py&shixun_gpid=2448&status=0
- */
|