wildpig 1.3.19 → 1.3.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/built-api-routes.ts +12 -8
- package/package.json +1 -1
- package/router/ServerDataGuard.tsx +12 -2
- package/scripts/WildPig.tsx +12 -2
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
import { middleware } from "@/api/middleware"
|
|
2
2
|
import {
|
|
3
|
-
GET as GET1,
|
|
4
3
|
POST as POST1,
|
|
5
|
-
} from "#/src/api/
|
|
4
|
+
} from "#/src/api/add/index";
|
|
6
5
|
import {
|
|
7
6
|
GET as GET2,
|
|
8
|
-
} from "#/src/api/
|
|
7
|
+
} from "#/src/api/say-hello/index";
|
|
9
8
|
import {
|
|
10
9
|
GET as GET3,
|
|
11
|
-
} from "#/src/api/server-data/
|
|
10
|
+
} from "#/src/api/server-data/404/index";
|
|
11
|
+
import {
|
|
12
|
+
GET as GET4,
|
|
13
|
+
} from "#/src/api/server-data/welcome/index";
|
|
12
14
|
|
|
13
15
|
export default {
|
|
14
|
-
"/api/
|
|
15
|
-
GET: (req: any) => middleware(req, GET1),
|
|
16
|
+
"/api/add": {
|
|
16
17
|
POST: (req: any) => middleware(req, POST1),
|
|
17
18
|
},
|
|
18
|
-
"/api/
|
|
19
|
+
"/api/say-hello": {
|
|
19
20
|
GET: (req: any) => middleware(req, GET2),
|
|
20
21
|
},
|
|
21
|
-
"/api/server-data/
|
|
22
|
+
"/api/server-data/404": {
|
|
22
23
|
GET: (req: any) => middleware(req, GET3),
|
|
23
24
|
},
|
|
25
|
+
"/api/server-data/welcome": {
|
|
26
|
+
GET: (req: any) => middleware(req, GET4),
|
|
27
|
+
},
|
|
24
28
|
}
|
package/package.json
CHANGED
|
@@ -10,8 +10,8 @@ export const ServerDataGuard = () => {
|
|
|
10
10
|
// serverData清空
|
|
11
11
|
serverDataStore.set(undefined);
|
|
12
12
|
|
|
13
|
-
const
|
|
14
|
-
const matches = matchRoutes(pageRoutes,
|
|
13
|
+
const pathname = location.pathname;
|
|
14
|
+
const matches = matchRoutes(pageRoutes, pathname);
|
|
15
15
|
const lastMatch = matches?.at(-1);
|
|
16
16
|
if(!lastMatch) {
|
|
17
17
|
// 404
|
|
@@ -26,6 +26,16 @@ export const ServerDataGuard = () => {
|
|
|
26
26
|
for(const [key, value] of Object.entries(lastMatch.params)){
|
|
27
27
|
if(value)serverDataApi = serverDataApi.replace(":" + key, value);
|
|
28
28
|
}
|
|
29
|
+
|
|
30
|
+
// 合并当前页面和serverDataApi的参数
|
|
31
|
+
const searchParams = new URLSearchParams(location.search);
|
|
32
|
+
for(const [key, value] of searchParams.entries()){
|
|
33
|
+
// 跳过已有参数
|
|
34
|
+
if(serverDataApi.includes(key + "="))continue;
|
|
35
|
+
serverDataApi += (serverDataApi.includes("?") ? "&" : "?") + key + "=" + value;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
29
39
|
fetch(serverDataApi).then(res => res.json()).then(data => {
|
|
30
40
|
serverDataStore.set(data);
|
|
31
41
|
if(data.title){
|
package/scripts/WildPig.tsx
CHANGED
|
@@ -76,13 +76,23 @@ export const startServer = async () => {
|
|
|
76
76
|
let serverDataApi = matchRoute.route.serverDataApi;
|
|
77
77
|
const getServerData = async () => {
|
|
78
78
|
if(!serverDataApi)return undefined;
|
|
79
|
+
const prefixUrl = request.url.split("/")[0] + "//" + request.url.split("/")[2];
|
|
79
80
|
// 需要请求服务端数据, 替换动态参数
|
|
80
81
|
for(const [key, value] of Object.entries(matchRoute.params)){
|
|
81
82
|
if(value)serverDataApi = serverDataApi.replace(":" + key, value);
|
|
82
83
|
}
|
|
84
|
+
// 加上当前request的query参数
|
|
85
|
+
for(const [key, value] of new URLSearchParams(request.url.split("?")[1]).entries()){
|
|
86
|
+
if(serverDataApi.includes(key + "="))continue; // 已经有这个参数了
|
|
87
|
+
serverDataApi += (serverDataApi.includes("?") ? "&" : "?") + key + "=" + value;
|
|
88
|
+
}
|
|
89
|
+
const serverRequest = new Request({
|
|
90
|
+
...request.clone(),
|
|
91
|
+
url: prefixUrl + serverDataApi, // 替换url
|
|
92
|
+
});
|
|
93
|
+
serverRequest.headers.set("wildpig-server-data-api", serverDataApi);
|
|
83
94
|
const pathname = serverDataApi.split("?")[0]; // 获取路径
|
|
84
|
-
const
|
|
85
|
-
const serverData = await fetch(handleUrl).then(r => r.json());
|
|
95
|
+
const serverData = await apiModules[pathname].GET(serverRequest).then((r: Response) => r.json());
|
|
86
96
|
return serverData;
|
|
87
97
|
};
|
|
88
98
|
let serverData = await getServerData();
|