Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 8ca7816

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /