Code Monkey home page Code Monkey logo

magic-api's Introduction

maven

特性 | 快速开始 | 文档/演示 | 示例项目 | 更新日志 | 项目截图 | 交流群

简介

magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发

【已有上千家中小型公司使用,上万名开发者用于接口配置开发。上百名开发者参与提交了功能建议,接近20多名贡献者参与。已被gitee长期推荐。从首个版本开始不断优化升级,目前版本稳定,开发者交流群活跃。参与交流QQ群④700818216】

特性

  • 支持MySQL、MariaDB、Oracle、DB2、PostgreSQL、SQLServer 等支持jdbc规范的数据库
  • 支持非关系型数据库Redis、Mongodb
  • 支持集群部署、接口自动同步。
  • 支持分页查询以及自定义分页查询
  • 支持多数据源配置,支持在线配置数据源
  • 支持SQL缓存,以及自定义SQL缓存
  • 支持自定义JSON结果、自定义分页结果
  • 支持对接口权限配置、拦截器等功能
  • 支持运行时动态修改数据源
  • 支持Swagger接口文档生成
  • 基于magic-script脚本引擎,动态编译,无需重启,实时发布
  • 支持Linq式查询,关联、转换更简单
  • 支持数据库事务、SQL支持拼接,占位符,判断等语法
  • 支持文件上传、下载、输出图片
  • 支持脚本历史版本对比与恢复
  • 支持脚本代码自动提示、参数提示、悬浮提示、错误提示
  • 支持导入Spring中的Bean、Java中的类
  • 支持在线调试
  • 支持自定义工具类、自定义模块包、自定义类型扩展、自定义方言、自定义列名转换等自定义操作

快速开始

maven引入

<!-- 以spring-boot-starter的方式引用 -->
<dependency>
	<groupId>org.ssssssss</groupId>
    <artifactId>magic-api-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>

修改application.properties

server.port=9999
#配置web页面入口
magic-api.web=/magic/web
#配置文件存储位置。当以classpath开头时,为只读模式
magic-api.resource.location=/data/magic-api

在线编辑

访问http://localhost:9999/magic/web进行操作

文档/演示

示例项目

项目截图

整体截图 代码提示
DEBUG 参数提示
远程推送 历史记录
数据源 全局搜索

交流群

微信群 QQ群
作者微信 QQ群
备注:加群,邀您加入群聊 点击加入QQ群:700818216

magic-api's People

Contributors

383366063 avatar ashangpeng avatar billdowney avatar chenjunnans avatar chunmenglu avatar dependabot[bot] avatar eeearth-van avatar javamxd avatar jiazi2018 avatar kj863257 avatar lailailai1203 avatar lixiangyang-code avatar lvjinze avatar sorieee avatar u-simon avatar wangshuai67 avatar wanrenzhizun avatar weyuhui110 avatar zhengchalei avatar zhengchangqing avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magic-api's Issues

如何切换自定义的db?

我想要使用我的localhost这个数据库进行查询操作,如何切换sql。

我下面的截图是使用默认数据库进行查询的。

image

image

Oracle库,sql查询很快,用db.select()查询很慢

环境:
oracle数据库
magic 1.7.2

过程:
1、用navicat客户端查询很快
image
2、使用magic的db.select(sql)查询,耗时:
image

二者查询速度相差甚远,简直不敢相信,有什么办法优化吗?

另:我看了新版本的发版说明,也不涉及此类问题。

http模块调用 https接口,提示ssl错误

调用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

关于a标签href变量定义问题

我在使用spiderflow的时候,爬取了一个a标签的href属性,变量是这么定义的:${extract.xpath(articleList[index],'//a/@href')},但是爬出来之后并不是我想要的链接,而是{"functionPrefix":"url"}这个东西,有大佬遇到过这个问题吗?

载入xml文件时,会去访问http://ssssssss.org/dtd/0.0.x/ssssssss.dtd。当网络断开时,启动会报错

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);

sqlite 不支持

sqlite 数据库不支持。可以启动项目,但是写接口执行的时候报错,添加一下 sqlite的支持

反馈一个问题,关于插入数据 字段默认为空的

我是才从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 随便一个字符串,就成功了

db.page 分页性能问题

你好,分页查询的时候,使用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

oracle trunc sysdate 时间错乱

查询oracle数据库时间错误

环境:
1.oracle版本11g
2.magic-api 版本
image

查询结果:
image

期望:
trunc函数可正常使用

无法连接sqlproxy软件

mysql前面放一层 sqlproxy软件,使用magic-api无法连接到sqlproxy,在web面板上添加数据源后,点击“测试”会hang住。使用数据源查询也会hang住。

解构赋值能否支持剩余元素赋值

目前测试下来发现脚本语言支持解构赋值var {items,id} =body,也支持元素展开var order = {...body},就是不支持剩余元素赋值var {items,...other} = body,能否考虑支持一下

页面上编辑了接口,但是数据库里和swagger没生效

这个截图是页面上编辑结束的。response参数为reportCount,hitCount
image

这个截图是swagger展示的,hitNumber,reportNumber
image

这个是数据库的存储

{
  "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 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]

PageHelper的支持

无法自定义扩展获取到总页数,希望可以和PageHelper结构一致返回给前端

引入扩展java类的问题。

你好,
在magic-api中引了一个自定义的java类 MessageUtils 类,类里有个sendMessage(Message message)的方法,参数为Message实体类。
我在引擎页面编写脚本的时候,
代码:
var message = new Message(); //成功
message.sendMessage(message); //报错
提示org/json/JSONExction错误。这个是参数类型不一致引起的?如果不修改原方法参数类型的情况下,是否能进行解决呢。

打包源码报错对于collect(java.util.stream.Collector<java.lang.Object,capture#1, 共 ?,java.util.List<java.lang.Object>>), 找不到合适的方法

如题,解决办法

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));

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.