Skip to content

Commit 72f33d2

Browse files
committed
feat: 优化 CGI 参数获取代码
1 parent 4a7efab commit 72f33d2

File tree

3 files changed

+50
-14
lines changed

3 files changed

+50
-14
lines changed

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# 更新日志
2+
3+
## 1.2.2
4+
5+
- 优化 CGI 参数获取代码
6+
- 修复前台加载时的布局展示,防止窗口闪烁
7+
8+
## 1.2.1
9+
10+
- 优化页面栏布局
11+
- 优化编码格式的弹出定位
12+
13+
## 1.2.0
14+
15+
- 新增支持多文件打开,防 vscode 页面 UI 和文件修改状态
16+
- 优化偏好设置的主题样式切换将应用到顶部和底部,确保页面各个模块视觉效果一致
17+
18+
## 1.1.0
19+
20+
- 重构修改代码加载模式为 CGI 模式。
21+
- 新增支持 https 加载,任意网络环境均可调用。
22+
- 移除不再监听端口。
23+
- 移除安装时无需设置密钥,安全性和 NAS 账号权限保持一致。
24+
25+
## 1.0.0
26+
27+
- 代码编辑器,支持单文件编辑操作,支持语法高亮、代码补全。

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@
44

55
显示名称:代码编辑器
66

7-
版本:1.2.1
7+
版本:1.2.2
88

99
发布者:Flex_7746
1010

1111
## 应用说明
1212

1313
VS Code 同源库,支持多种编码文件的操作,更有语法高亮、代码补全。
1414

15+
[更新日志](CHANGELOG.md)
16+
1517
![示例](docs/example.png)
1618

1719
## 本地运行
@@ -36,4 +38,4 @@ npm run build
3638
## CGI 模式说明
3739

3840
- 服务端:服务端将接口和 node 环境,通过 pkg 打包成 linux 运行文件,在飞牛以 cgi 的方式进行调用和返回。
39-
- 客户端:vite 打包后,将引入文件通过服务端 api 加载
41+
- 客户端:vite 打包后,将引入文件通过服务端 api 加载

backend/src/cgi.js

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
1+
const querystring = require("querystring");
2+
13
const exec = require("./utils/exec");
24

35
// 获取 env、query、body
46
async function getData() {
57
const env = process.env;
68

7-
const result = { api: env.HTTP_API_PATH || "", query: {}, body: {} };
9+
const result = {
10+
api: env.HTTP_API_PATH || "",
11+
query: querystring.parse(env.QUERY_STRING || ""),
12+
body: {},
13+
};
814

9-
// query
10-
if (env.QUERY_STRING) {
11-
const urlParams = new URLSearchParams(env.QUERY_STRING);
12-
for (const [key, value] of urlParams) {
13-
result.query[key] = decodeURIComponent(value);
14-
}
15-
}
16-
17-
// body
1815
if (env.REQUEST_METHOD === "POST") {
1916
const contentLength = parseInt(env.CONTENT_LENGTH || "0");
2017

21-
if (contentLength !== 0) {
18+
if (contentLength > 0) {
2219
const str = await new Promise((r) => {
2320
let str = "";
2421

@@ -32,7 +29,17 @@ async function getData() {
3229
});
3330

3431
try {
35-
result.body = str ? JSON.parse(str) : {};
32+
if (str.trim()) {
33+
const type = env.CONTENT_TYPE || "";
34+
35+
if (type.includes("application/x-www-form-urlencoded")) {
36+
result.body = querystring.parse(str);
37+
} else if (type.includes("application/json")) {
38+
result.body = JSON.parse(str);
39+
} else {
40+
result.body = { raw: str };
41+
}
42+
}
3643
} catch (error) {
3744
result.body = {};
3845
}

0 commit comments

Comments
 (0)