Skip to content

Commit 8ca7816

Browse files
committed
Java:MultiDataSource 更新内置 APIAuto
1 parent 5634899 commit 8ca7816

File tree

3 files changed

+160
-113
lines changed

3 files changed

+160
-113
lines changed

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/static/apijson/JSONRequest.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
const TAG_REQUEST_UTIL = 'RequestUtil';
2222

23-
var URL_BASE = "http://localhost:8080"; // 基地址
23+
var URL_BASE = "http://localhost:8080"; // "http://apijson.cn:8080"; // 基地址
2424
var URL_GET = URL_BASE + "/get"; // 常规获取数据方式
2525
var URL_HEAD = URL_BASE + "/head"; // 检查,默认是非空检查,返回数据总数
2626
var URL_GETS = URL_BASE + "/gets"; // 通过POST来GET数据,不显示请求内容和返回结果,一般用于对安全要求比较高的请求

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/static/apijson/StringUtil.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ var StringUtil = {
5858
return s.length <= 0;
5959
},
6060

61+
isNotEmpty: function(s, trim) {
62+
return ! this.isEmpty(s, trim);
63+
},
64+
6165
/**判断是否为代码名称,只能包含字母,数字或下划线
6266
* @param s
6367
* @return

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/static/js/main.js

Lines changed: 155 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,14 @@
387387
if (theRequest == null) {
388388
theRequest = {};
389389
}
390-
theRequest[part.substring(0, ind)] = decodeURIComponent(part.substring(ind+1));
390+
391+
var v = decodeURIComponent(part.substring(ind+1));
392+
try {
393+
v = JSON.parse(v)
394+
}
395+
catch (e) {}
396+
397+
theRequest[part.substring(0, ind)] = v;
391398
}
392399

393400
return theRequest;
@@ -623,7 +630,7 @@
623630
isRegister: false,
624631
isCrossEnabled: false,
625632
isMLEnabled: false,
626-
isDelegateEnabled: false,
633+
isDelegateEnabled: true,
627634
isPreviewEnabled: false,
628635
isEncodeEnabled: true,
629636
isEditResponse: false,
@@ -653,7 +660,7 @@
653660
host: '',
654661
database: 'MYSQL', // 查文档必须,除非后端提供默认配置接口 // 用后端默认的,避免用户总是没有配置就问为什么没有生成文档和注释 'MYSQL',// 'POSTGRESQL',
655662
schema: 'sys', // 查文档必须,除非后端提供默认配置接口 // 用后端默认的,避免用户总是没有配置就问为什么没有生成文档和注释 'sys',
656-
server: 'http://localhost:8080', // Chrome 90+ 跨域问题非常难搞,开发模式启动都不行了 'http://apijson.org:9090', //apijson.cn
663+
server: 'http://localhost:8080', // 'http://apijson.cn:9090', // Chrome 90+ 跨域问题非常难搞,开发模式启动都不行了 'http://apijson.org:9090', //apijson.cn
657664
// server: 'http://47.74.39.68:9090', // apijson.org
658665
thirdParty: 'SWAGGER /v2/api-docs', //apijson.cn
659666
// thirdParty: 'RAP /repository/joined /repository/get',
@@ -3472,33 +3479,27 @@
34723479
var url = StringUtil.get(vUrl.value)
34733480
var index = url.indexOf('?')
34743481
if (index >= 0) {
3475-
var params = StringUtil.split(url.substring(index + 1), '&')
3476-
3477-
var paramObj = {}
3478-
var p
3479-
var v
3480-
var ind
3481-
if (params != null) {
3482-
for (var i = 0; i < params.length; i++) {
3483-
p = params[i]
3484-
ind = p == null ? -1 : p.indexOf('=')
3485-
if (ind < 0) {
3486-
continue
3487-
}
3488-
3489-
v = p.substring(ind + 1)
3490-
try {
3491-
v = JSON.parse(v)
3482+
var paramObj = getRequestFromURL(url.substring(index))
3483+
vUrl.value = url.substring(0, index)
3484+
if (paramObj != null && $.isEmptyObject(paramObj) == false) {
3485+
var originVal = this.getRequest(vInput.value, {});
3486+
var isConflict = false;
3487+
3488+
if ($.isEmptyObject(originVal) == false) {
3489+
for (var k in paramObj) {
3490+
if (originVal.hasOwnProperty(k)) {
3491+
isConflict = true;
3492+
break;
3493+
}
34923494
}
3493-
catch (e) {}
3494-
3495-
paramObj[p.substring(0, ind)] = v
34963495
}
3497-
}
34983496

3499-
vUrl.value = url.substring(0, index)
3500-
if ($.isEmptyObject(paramObj) == false) {
3501-
vInput.value = '// TODO 从 URL 上的参数转换过来:\n' + JSON.stringify(paramObj, null, ' ') + '\n// FIXME 需要与下面原来的字段合并为一个 JSON:\n' + StringUtil.get(vInput.value)
3497+
if (isConflict) {
3498+
vInput.value = JSON.stringify(paramObj, null, ' ') + '\n\n// FIXME 从 URL 上的参数转换过来,需要与下面原来的字段合并为一个 JSON:\n\n' + StringUtil.get(vInput.value)
3499+
}
3500+
else {
3501+
vInput.value = JSON.stringify(Object.assign(originVal, paramObj), null, ' ')
3502+
}
35023503
}
35033504
clearTimeout(handler) //解决 vUrl.value 和 vInput.value 变化导致刷新,而且会把 vInput.value 重置,加上下面 onChange 再刷新就卡死了
35043505
}
@@ -3798,86 +3799,106 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
37983799
var selectionStart = target.selectionStart;
37993800
var selectionEnd = target.selectionEnd;
38003801

3801-
if ((selectionStart <= 0 && selectionEnd >= StringUtil.get(target.value).length) || StringUtil.isEmpty(target.value, true)) {
3802-
if (target == vUrl) { //TODO 把 Chrome 或 Charles 等抓到的 Header 和 Content 自动粘贴到 vUrl, vHeader
3802+
if (StringUtil.isNotEmpty(paste, true) && (StringUtil.isEmpty(target.value, true)
3803+
|| selectionStart <= 0 && selectionEnd >= StringUtil.get(target.value).length)) {
3804+
if (target == vUrl) { // TODO 把 Chrome 或 Charles 等抓到的 Response Header 和 Content 自动粘贴到 vUrl, vHeader
38033805
try {
3804-
var contentStart = 0;
3805-
var lines = StringUtil.split(paste, '\n');
3806-
var header = '';
3807-
3808-
for (var i = 0; i < lines.length; i ++) {
3809-
var l = StringUtil.trim(lines[i]);
3810-
ind = l.indexOf(':');
3811-
var left = ind < 0 ? '' : StringUtil.trim(l.substring(0, ind));
3812-
3813-
if (/^[a-zA-Z0-9\- ]+$/g.test(left)) {
3814-
var lowerKey = left.toLowerCase();
3815-
var value = l.substring(ind + 1);
3816-
3817-
if (lowerKey == 'request method') {
3818-
value = StringUtil.trim(value).toUpperCase();
3819-
this.type = value == 'GET' ? 'PARAM' : (value == 'POST' ? 'JSON' : value);
3820-
event.preventDefault();
3821-
}
3822-
else if (lowerKey == 'content-type') {
3823-
var type = vType.value != 'JSON' ? null : CONTENT_VALUE_TYPE_MAP[StringUtil.trim(value)];
3824-
if (StringUtil.isEmpty(type, true) != true) {
3825-
this.type = type;
3806+
if (paste.trim().indexOf('\n') > 0) { // 解决正常的 URL 都粘贴不了
3807+
var contentStart = 0;
3808+
var lines = StringUtil.split(paste, '\n');
3809+
var header = '';
3810+
3811+
for (var i = 0; i < lines.length; i++) {
3812+
var l = StringUtil.trim(lines[i]);
3813+
var ind = l.indexOf(':');
3814+
var left = ind < 0 ? '' : StringUtil.trim(l.substring(0, ind));
3815+
3816+
if (/^[a-zA-Z0-9\- ]+$/g.test(left)) {
3817+
var lowerKey = left.toLowerCase();
3818+
var value = l.substring(ind + 1).trim();
3819+
3820+
if (lowerKey == 'host') {
3821+
this.setBaseUrl(value.endsWith(':443') ? 'https://' + value.substring(0, value.length - ':443'.length) : 'http://' + value);
38263822
event.preventDefault();
38273823
}
3828-
}
3829-
else if (lowerKey == 'request url') {
3830-
vUrl.value = StringUtil.trim(value);
3831-
event.preventDefault();
3832-
}
3833-
else if (StringUtil.isEmpty(lowerKey, true) || lowerKey.startsWith('accept-')
3834-
|| lowerKey.startsWith('access-control-') || IGNORE_HEADERS.indexOf(lowerKey) >= 0) {
3835-
// 忽略
3836-
}
3837-
else {
3838-
header += '\n' + left + ': ' + StringUtil.trim(l.substring(ind + 1));
3839-
}
3840-
3841-
contentStart += lines[i].length + 1;
3842-
}
3843-
else {
3844-
if (l.startsWith('HTTP/') || l.startsWith('HTTPS/')) { // HTTP/1.1 200
3845-
contentStart += lines[i].length + 1;
3846-
continue;
3847-
}
3824+
else if (lowerKey == 'request method') {
3825+
value = value.toUpperCase();
3826+
this.type = value == 'GET' ? 'PARAM' : (value == 'POST' ? 'JSON' : value);
3827+
event.preventDefault();
3828+
}
3829+
else if (lowerKey == 'content-type') {
3830+
var type = vType.value != 'JSON' ? null : CONTENT_VALUE_TYPE_MAP[value];
3831+
if (StringUtil.isEmpty(type, true) != true) {
3832+
this.type = type;
3833+
event.preventDefault();
3834+
}
3835+
}
3836+
else if (lowerKey == 'request url') {
3837+
vUrl.value = value;
3838+
event.preventDefault();
3839+
}
3840+
else if (StringUtil.isEmpty(lowerKey, true) || lowerKey.startsWith('accept-')
3841+
|| lowerKey.startsWith('access-control-') || IGNORE_HEADERS.indexOf(lowerKey) >= 0) {
3842+
// 忽略
3843+
}
3844+
else {
3845+
header += '\n' + left + ': ' + StringUtil.trim(l.substring(ind + 1));
3846+
}
38483847

3849-
var ind = l.indexOf(' ');
3850-
var m = ind < 0 ? '' : StringUtil.trim(l.substring(0, ind));
3851-
if (APIJSON_METHODS.indexOf(m.toLowerCase()) >= 0) { // POST /gets HTTP/1.1
38523848
contentStart += lines[i].length + 1;
3853-
continue;
38543849
}
3850+
else {
3851+
if (ind <= 0 || StringUtil.isEmpty(l) || l.startsWith('HTTP/') || l.startsWith('HTTPS/')) { // HTTP/1.1 200
3852+
contentStart += lines[i].length + 1;
3853+
continue;
3854+
}
38553855

3856-
var content = StringUtil.trim(paste.substring(contentStart));
3857-
var json = null;
3858-
try {
3859-
json = JSON5.parse(content); // { "a":1, "b": "c" }
3860-
} catch (e) {
3861-
log(e)
3856+
var ind = l.indexOf(' ');
3857+
var m = ind < 0 ? '' : StringUtil.trim(l.substring(0, ind));
3858+
if (APIJSON_METHODS.indexOf(m.toLowerCase()) >= 0) { // POST /gets HTTP/1.1
3859+
contentStart += lines[i].length + 1;
3860+
var t = m.toUpperCase()
3861+
this.type = t == 'GET' ? 'PARAM' : (t == 'POST' ? 'JSON' : t);
3862+
3863+
l = l.substring(ind).trim();
3864+
ind = l.indexOf(' ');
3865+
var url = ind < 0 ? l : l.substring(0, ind);
3866+
if (url.length > 0 && url != '/') {
3867+
vUrl.value = this.getBaseUrl() + (url.startsWith('/') ? url : '/' + url);
3868+
}
3869+
3870+
event.preventDefault();
3871+
continue;
3872+
}
3873+
3874+
var content = StringUtil.trim(paste.substring(contentStart));
3875+
var json = null;
38623876
try {
3863-
json = getRequestFromURL(content); // a=1&b=c
3864-
} catch (e2) {
3865-
log(e2)
3877+
json = JSON5.parse(content); // { "a":1, "b": "c" }
38663878
}
3879+
catch (e) {
3880+
log(e)
3881+
try {
3882+
json = getRequestFromURL('?' + content); // a=1&b=c
3883+
} catch (e2) {
3884+
log(e2)
3885+
}
3886+
}
3887+
3888+
vInput.value = json == null || Object.keys(json).length < 0 ? '' : JSON.stringify(json, null, ' ');
3889+
event.preventDefault();
3890+
break;
38673891
}
38683892

3869-
vInput.value = json == null || Object.keys(json).length < 0 ? '' : JSON.stringify(json, null, ' ');
3870-
event.preventDefault();
3871-
break;
38723893
}
38733894

3895+
if (StringUtil.isEmpty(header, true) != true) {
3896+
vHeader.value = StringUtil.trim(header);
3897+
event.preventDefault();
3898+
}
38743899
}
3875-
3876-
if (StringUtil.isEmpty(header, true) != true) {
3877-
vHeader.value = StringUtil.trim(header);
3878-
event.preventDefault();
3879-
}
3880-
} catch (e) {
3900+
}
3901+
catch (e) {
38813902
log(e)
38823903
}
38833904
}
@@ -3894,36 +3915,58 @@ Content-Type: ` + contentType) + (StringUtil.isEmpty(headerStr, true) ? '' : hea
38943915
}
38953916
target.value = StringUtil.trim(newStr);
38963917
event.preventDefault();
3897-
} catch (e) {
3918+
}
3919+
catch (e) {
38983920
log(e)
38993921
}
39003922
}
39013923
else if (target == vInput) { // key: value 转 { "key": value }
39023924
try {
3903-
var lines = StringUtil.split(paste, '\n');
3904-
var json = {};
3925+
try {
3926+
JSON5.parse(paste); // 正常的 JSON 就不用转了
3927+
}
3928+
catch (e) {
3929+
var lines = StringUtil.split(paste, '\n');
3930+
var json = {};
39053931

3906-
for (var i = 0; i < lines.length; i ++) {
3907-
var l = StringUtil.trim(lines[i]) || '';
3908-
if (l.startsWith('//')) {
3909-
continue;
3910-
}
3932+
for (var i = 0; i < lines.length; i++) {
3933+
var l = StringUtil.trim(lines[i]) || '';
3934+
if (l.startsWith('//')) {
3935+
continue;
3936+
}
39113937

3912-
var ind = l.lastIndexOf(' //');
3913-
l = ind < 0 ? l : StringUtil.trim(l.substring(0, ind));
3938+
var ind = l.lastIndexOf(' //');
3939+
l = ind < 0 ? l : StringUtil.trim(l.substring(0, ind));
39143940

3915-
ind = l.indexOf(':');
3916-
if (ind >= 0) {
3917-
var left = target == vHeader ? StringUtil.trim(l.substring(0, ind)) : l.substring(0, ind);
3918-
json[left] = StringUtil.trim(l.substring(ind + 1));
3941+
ind = l.indexOf(':');
3942+
if (ind >= 0) {
3943+
var left = target == vHeader ? StringUtil.trim(l.substring(0, ind)) : l.substring(0, ind);
3944+
if (left.indexOf('=') >= 0 || left.indexOf('&') >= 0) {
3945+
try {
3946+
json = getRequestFromURL('?' + paste);
3947+
if (Object.keys(json).length > 0) {
3948+
break;
3949+
}
3950+
} catch (e2) {
3951+
log(e)
3952+
}
3953+
}
3954+
3955+
json[left] = StringUtil.trim(l.substring(ind + 1));
3956+
}
39193957
}
3920-
}
39213958

3922-
if (Object.keys(json).length > 0) {
3923-
vInput.value = JSON.stringify(json, null, ' ');
3924-
event.preventDefault();
3959+
if (Object.keys(json).length <= 0) {
3960+
json = getRequestFromURL('?' + paste);
3961+
}
3962+
3963+
if (Object.keys(json).length > 0) {
3964+
vInput.value = JSON.stringify(json, null, ' ');
3965+
event.preventDefault();
3966+
}
39253967
}
3926-
} catch (e) {
3968+
}
3969+
catch (e) {
39273970
log(e)
39283971
}
39293972
}

0 commit comments

Comments
 (0)