ssssssss-team / magic-api Goto Github PK
View Code? Open in Web Editor NEWmagic-api 是一个接口快速开发框架,通过Web页面编写脚本以及配置,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象
Home Page: http://ssssssss.org
License: MIT License
magic-api 是一个接口快速开发框架,通过Web页面编写脚本以及配置,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象
Home Page: http://ssssssss.org
License: MIT License
如果没有增加权限控制,还是不敢用于生产环境额
比如,里面有一个httpclient,访问一个接口这个接口去访问百度,然后将百度的数据取到处理之后返回给调用方,谢谢
mysql前面放一层 sqlproxy软件,使用magic-api无法连接到sqlproxy,在web面板上添加数据源后,点击“测试”会hang住。使用数据源查询也会hang住。
sqlite 数据库不支持。可以启动项目,但是写接口执行的时候报错,添加一下 sqlite的支持
如果http返回的状态码不是200,响应结果为null,无法获得错误信息,也无法得到具体的响应状态
写了一段脚本
if(data.id==null){
}
提示错误org.ssssssss.script.exception.MagicScriptException java.lang.string中找不到属性id或者方法getId,
请问是什么原因导致的,现在magic-script版本是1.4.5
我是这样的研发环境。我在本地的环境配置如下采用的magic-api 1.7.5版本
同样的数据库为啥运行结果不同呢?配置也相同的。本地注册函数、注册接口、而测试环境全部注册为了函数。这样不同的原因可能是什么呢?
2022-04-19 14:52:01.355 INFO 21466 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[gitee组权限:/config/groupRightRule]
2022-04-19 14:52:01.355 INFO 21466 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[通过access_token获得用户信息:/tools/token/user]
2022-04-19 14:52:01.355 INFO 21466 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[获得auth-server请求服务:/config/serverConfig]
2022-04-19 14:52:01.355 INFO 21466 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[获得access_token:/tools/token/auth]
2022-04-19 14:52:01.355 INFO 21466 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[根据4A账户获取用户信息:/tools/user/userInfobyAccount]
2022-04-19 14:52:01.379 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:添加项目成员(分配角色),POST:/project/member/set
2022-04-19 14:52:01.380 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:从其他项目导入代码库clone项目,POST:/webhook/repository/clone
2022-04-19 14:52:01.380 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:创建sshkey-公钥,GET:/key/sshKey
2022-04-19 14:52:01.381 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:新建模板,POST:/repository/template
2022-04-19 14:52:01.381 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:删除sshkey-公钥,DELETE:/key/sshkey
2022-04-19 14:52:01.381 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:新建分支,POST:/repository/barnch
2022-04-19 14:52:01.382 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:获取文件-返回文件内容-文本格式,GET:/repository/file
2022-04-19 14:52:01.382 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:新建代码库时调用,GET:/webhook/repository/create/callback
2022-04-19 14:52:01.383 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:获得公钥列表,GET:/key/sshkeys
2022-04-19 14:52:01.383 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:磐舟获取access_token,GET:/token/callBack
2022-04-19 14:52:01.384 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:配置webhoo-记录代码变更,GET:/repository/webhook
2022-04-19 14:52:01.384 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:删除项目成员,DELETE:/project/member/del
2022-04-19 14:52:01.384 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:新建项目,POST:/project/
2022-04-19 14:52:01.385 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:获取文件-查询指定目录下的文件列表,GET:/repository/tree
2022-04-19 14:52:01.385 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:获取用户信息,GET:/token/userInfo
2022-04-19 14:52:01.385 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:删除代码库时调用,GET:/webhook/repository/del/callback
2022-04-19 14:52:01.385 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:提交次数,GET:/statistics/cmmit
2022-04-19 14:52:01.386 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:分配角色,POST:/role/group/grant
2022-04-19 14:52:01.386 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:最后一次提交信息,GET:/repository/lastCommit
2022-04-19 14:52:01.386 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:上传文件,POST:/repository/upload
2022-04-19 14:52:01.386 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:查询角色列表-可通过该接口进行角色id的获取-就无需进行上述的角色参数配置,GET:/role/group/list
2022-04-19 14:52:01.387 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:代码增加行数,GET:/statistics/codeAdd
2022-04-19 14:52:01.387 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:根据模板创建代码库,POST:/webhook/repository/createByTemplate
2022-04-19 14:52:01.387 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:删除用户,DELETE:/user/user/del
2022-04-19 14:52:01.388 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:代码仓库数,GET:/statistics/repository
2022-04-19 14:52:01.388 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:新增用户,POST:/user/user/add
2022-04-19 14:52:01.388 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:代码分支数,GET:/statistics/barnch
2022-04-19 14:52:01.389 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:代码删除行数,GET:/statistics/codeDel
2022-04-19 14:52:01.389 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:代码行数统计,GET:/statistics/codeLine
2022-04-19 14:52:01.389 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:根据用户账户获取用户信息,GET:/user/userinfo
2022-04-19 14:52:01.389 INFO 21466 --- [ main] o.s.m.config.MappingHandlerMapping : 注册接口:操作日志(未确定),GET:/repository/log
2022-04-19 11:36:54.063 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[代码删除行数:/statistics/codeDel]
2022-04-19 11:36:54.064 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[新增用户:/user/user/add]
2022-04-19 11:36:54.064 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[代码分支数:/statistics/barnch]
2022-04-19 11:36:54.064 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[提交次数:/statistics/cmmit]
2022-04-19 11:36:54.064 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[上传文件:/repository/upload]
2022-04-19 11:36:54.064 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[获取文件-返回文件内容-文本格式:/repository/file]
2022-04-19 11:36:54.064 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[删除sshkey-公钥:/key/sshkey]
2022-04-19 11:36:54.064 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[新建项目:/project/]
2022-04-19 11:36:54.065 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[获得access_token:/tools/token/auth]
2022-04-19 11:36:54.065 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[根据模板创建代码库:/webhook/repository/createByTemplate]
2022-04-19 11:36:54.065 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[创建sshkey-公钥:/key/sshKey]
2022-04-19 11:36:54.065 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[配置webhoo-记录代码变更:/repository/webhook]
2022-04-19 11:36:54.065 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[删除用户:/user/user/del]
2022-04-19 11:36:54.065 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[代码仓库数:/statistics/repository]
2022-04-19 11:36:54.065 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[查询角色列表-可通过该接口进行角色id的获取-就无需进行上述的角色参数配置:/role/group/list]
2022-04-19 11:36:54.065 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[获取文件-查询指定目录下的文件列表:/repository/tree]
2022-04-19 11:36:54.065 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[分配角色:/role/group/grant]
2022-04-19 11:36:54.065 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[最后一次提交信息:/repository/lastCommit]
2022-04-19 11:36:54.065 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[根据用户账户获取用户信息:/user/userinfo]
2022-04-19 11:36:54.066 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[从其他项目导入代码库clone项目:/webhook/repository/clone]
2022-04-19 11:36:54.066 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[代码行数统计:/statistics/codeLine]
2022-04-19 11:36:54.066 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[通过access_token获得用户信息:/tools/token/user]
2022-04-19 11:36:54.066 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[新建代码库时调用:/webhook/repository/create/callback]
2022-04-19 11:36:54.066 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[根据4A账户获取用户信息:/tools/user/userInfobyAccount]
2022-04-19 11:36:54.066 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[新建模板:/repository/template]
2022-04-19 11:36:54.067 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[操作日志(未确定):/repository/log]
2022-04-19 11:36:54.067 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[gitee组权限:/config/groupRightRule]
2022-04-19 11:36:54.067 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[添加项目成员(分配角色):/project/member/set]
2022-04-19 11:36:54.067 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[获得auth-server请求服务:/config/serverConfig]
2022-04-19 11:36:54.067 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[删除代码库时调用:/webhook/repository/del/callback]
2022-04-19 11:36:54.067 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[获取用户信息:/token/userInfo]
2022-04-19 11:36:54.067 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[删除项目成员:/project/member/del]
2022-04-19 11:36:54.067 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[新建分支:/repository/barnch]
2022-04-19 11:36:54.068 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[获得公钥列表:/key/sshkeys]
2022-04-19 11:36:54.068 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[代码增加行数:/statistics/codeAdd]
2022-04-19 11:36:54.068 INFO 1 --- [ main] o.s.m.config.MagicFunctionManager : 注册函数:[磐舟获取access_token:/token/callBack]
是需要修改配置嘛?现在通常方案是直接重启服务就能释放,比较麻烦,想问问有没有代码上可以解决的方案
通过appKey appSecret 请求时带上appKey 时间戳 签名
接口和调用方之前是有授权关系的
有没有考虑配置界面化
查询时缓存,编辑时使缓存失效,如何实现呢
bus.$on('ws_log', rows => {
this.onLogReceived(rows[0])})
这个ws_log是指什么呢 rows没有数据啊
我在使用spiderflow的时候,爬取了一个a标签的href属性,变量是这么定义的:${extract.xpath(articleList[index],'//a/@href')},但是爬出来之后并不是我想要的链接,而是{"functionPrefix":"url"}这个东西,有大佬遇到过这个问题吗?
如题
java.net.UnknownHostException: ssssssss.org
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[na:1.8.0_201]
我暂时通过改变在
S8XMLFileParser类里解析xml段的代码避开了解析。但是还是直接读本地dtd最好。我的方式如下:
DocumentBuilder builder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
builder.setEntityResolver(
new EntityResolver(){
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException
{
return new InputSource(new StringBufferInputStream(""));
// return null;//这个的效果仍然是从网络来抓取DTD来验证
}
}
);
Document document = builder.parse(file);
用于管理需要的一些资源文件,例如:服务端渲染的模版文件,配置数据等
并提供相应的文件访问Module
我是才从PHP转过来的, 遇见一个很奇怪的问题
数据库 mysql 5.7.x
使用插入遇见
return db.insert("insert into db_dept(name,code) values('ad222min','admin')");
提示
org.ssssssss.script.exception.MagicScriptException: PreparedStatementCallback; Field 'remark' doesn't have a default value; nested exception is java.sql.SQLException: Field 'remark' doesn't have a default value at Row:53~53,Col:11~74
但是我直接数据库里面执行
insert into db_dept(name,code) values('ad222min','admin')
是正常的,
mysql.ini 已经设置
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
通用的 单表操作 插入数据也一样的问题,
我也找不到原因了,
但是 如果代入 remark 随便一个字符串,就成功了
现在接口保护不知道需要怎么设置,麻烦大佬赐教。
如题
ORDER BY和GROUP BY的顺序不是有点问题吗
目前测试下来发现脚本语言支持解构赋值var {items,id} =body,也支持元素展开var order = {...body},就是不支持剩余元素赋值var {items,...other} = body,能否考虑支持一下
请问,能防止sql注入攻击吗?
你好,分页查询的时候,使用page进行分页时候,执行的count查询语句是:
select count(1) from (select * from table_name) count_
这语句,应该是有性能问题的吧。
虽然pag操作,提供了自定义count查询语句的方法,但是却无法自定分页参数,这表示很郁闷。请问大佬这种情况下,应该怎么处理。
// 这个语句,可以自定义 count 查询语句,但是不能自定义分页参数
db.page(countSqlOrXml,sqlOrXml)
// 这个语句,可以自定义分页参数,但是不能自定义 count 查询语句
db.page(sqlOrXml,limit,offset)
版本2.0.1,数据源:MySql
import http;
return http.connect('接口地址').post().getBody();
内网环境,接口在postman上已经调通肯定能访问,但是按文档写http请求就都连接失败,是哪里拦截了需要配置嘛?
无法自定义扩展获取到总页数,希望可以和PageHelper结构一致返回给前端
mybatis中的foreach语句怎么编写?
这个截图是页面上编辑结束的。response参数为reportCount,hitCount
这个截图是swagger展示的,hitNumber,reportNumber
这个是数据库的存储
{
"properties" : { },
"id" : "95ce1a51e6eb4974aaa3966be7f74aa4",
"script" : null,
"groupId" : "d47fce573fd54feeaed88f6971a4d402",
"name" : "统计情报数和情报转事件数接口",
"createTime" : null,
"updateTime" : 1631668188476,
"method" : "POST",
"path" : "statisticCount",
"parameters" : [ ],
"option" : "[]",
"requestBody" : "{\n \"startTime\": \"开始时间\",\n \"endTime\": \"截止时间\"\n}",
"headers" : [ ],
"paths" : [ ],
"responseBody" : "{\n \"code\": 1,\n \"message\": \"success\",\n \"data\": {\n \"reportNumber\": \"情报上报数量\",\n \"hitNumber\": \"情报命中数量\"\n },\n \"timestamp\": 1631612822033,\n \"executeTime\": 2\n}",
"description" : "统计情报上报数量、情报命中数量",
"requestBodyDefinition" : {
"name" : "",
"value" : "",
"description" : "",
"required" : false,
"dataType" : "Object",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ {
"name" : "startTime",
"value" : "开始时间",
"description" : "",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "endTime",
"value" : "截止时间",
"description" : "",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
} ]
},
"responseBodyDefinition" : {
"name" : "",
"value" : "",
"description" : "",
"required" : false,
"dataType" : "Object",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ {
"name" : "code",
"value" : "1",
"description" : "",
"required" : false,
"dataType" : "Integer",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "message",
"value" : "success",
"description" : "",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "data",
"value" : "",
"description" : "",
"required" : false,
"dataType" : "Object",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ {
"name" : "reportNumber",
"value" : "情报上报数量",
"description" : "情报上报数量",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "hitNumber",
"value" : "情报命中数量",
"description" : "情报命中数量",
"required" : false,
"dataType" : "String",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
} ]
}, {
"name" : "timestamp",
"value" : "1631612822033",
"description" : "",
"required" : false,
"dataType" : "Long",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
}, {
"name" : "executeTime",
"value" : "2",
"description" : "",
"required" : false,
"dataType" : "Integer",
"type" : null,
"defaultValue" : null,
"validateType" : "",
"error" : "",
"expression" : "",
"children" : [ ]
} ]
},
"optionMap" : { }
}
================================
var res={
"reportCount":"情报上报数量",
"hitCount":"情报命中数量"
}
return res;
希望页面上编辑完接口后,swagger和数据库可以实时生效。
你好,
在magic-api中引了一个自定义的java类 MessageUtils 类,类里有个sendMessage(Message message)的方法,参数为Message实体类。
我在引擎页面编写脚本的时候,
代码:
var message = new Message(); //成功
message.sendMessage(message); //报错
提示org/json/JSONExction错误。这个是参数类型不一致引起的?如果不修改原方法参数类型的情况下,是否能进行解决呢。
如果http返回的状态码不是200,响应结果为null,无法获得错误信息,也无法得到具体的响应状态
比如数据库查询 userPhone 字段,实际返回userphone,这个问题应该怎么解决
如题 一些java方法要单独处理,是否可以直接调用 magic 的模块?
调用https接口,提示ssl错误,这个需要在哪里处理,或者skip掉ssl验证。
接口/magic/getAlarmList请求出错org.ssssssss.script.exception.MagicScriptException: I/O error on GET request for "https://xxx/openapi/v1.0/info": PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at Row:11~11,Col:9~12
var obj=http.header("apiKey","551dff0bd8a4ddce4292b38effc81b8b").param(map).connect("https://xxx/openapi/v1.0/info").get();
^^^^
at org.ssssssss.script.MagicScriptError.error(MagicScriptError.java:71)
at org.ssssssss.script.MagicScriptError.transfer(MagicScriptError.java:114)
at org.ssssssss.script.MagicScript.execute(MagicScript.java:97)
at org.ssssssss.script.MagicScript.eval(MagicScript.java:153)
at org.ssssssss.magicapi.script.ScriptManager.executeScript(ScriptManager.java:66)
at org.ssssssss.magicapi.controller.RequestHandler.invokeRequest(RequestHandler.java:264)
at org.ssssssss.magicapi.controller.RequestHandler.invoke(RequestHandler.java:124)
at jdk.internal.reflect.GeneratedMethodAccessor288.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1064)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
at org.ssssssss.magicapi.config.MagicCorsFilter.doFilter(MagicCorsFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:785)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:602)
at org.ssssssss.magicapi.modules.HttpModule.execute(HttpModule.java:173)
at org.ssssssss.magicapi.modules.HttpModule.get(HttpModule.java:139)
at jdk.internal.reflect.GeneratedMethodAccessor292.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.ssssssss.script.reflection.MethodInvoker.invoke(MethodInvoker.java:20)
at org.ssssssss.script.reflection.JavaInvoker.invoke0(JavaInvoker.java:83)
at org.ssssssss.script.runtime.handle.FunctionCallHandle.invoke_method(FunctionCallHandle.java:138)
at MagicScript_65.execute(MagicScript_65.ms:11)
at org.ssssssss.script.MagicScript.execute(MagicScript.java:93)
... 56 more
有类似mybatis标签吗?要去除末尾逗号之类的问题
如题
如题,解决办法
RequestHandler 282行的
List<BaseDefinition> validates = validateParameters.stream()
.filter(it -> VALIDATE_TYPE_EXPRESSION.equals(it.getValidateType()) && StringUtils.isNotBlank(it.getExpression()))
.collect(Collectors.toList());
改成
Supplier<List<BaseDefinition>> supplier = () -> new ArrayList<>();
List<BaseDefinition> validates = validateParameters.stream()
.filter(it -> VALIDATE_TYPE_EXPRESSION.equals(it.getValidateType()) && StringUtils.isNotBlank(it.getExpression()))
.collect(Collectors.toCollection(supplier));
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.