Skip to main content
Glama
04.常见问题.md6.29 kB
--- title: "常见问题" date: "2022-01-30T10:29:00.000Z" permalink: "/pages/faq/" --- # 如何配置JSON日期的格式 使用Jackson的配置如下(Spring Boot默认使用Jackson): spring: jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss 对于LocalDateTime配置 @Bean public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { LocalDateTimeSerializer localDateTimeSerializer = new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeSerializer); } 其它的自行参考json框架配置 # 出现找不到db模块的错误 目前已知两种情况: * 未配置数据源 * 未引用spring-boot-starter-jdbc # 如何获取RequestBody中的参数 脚本中使用body.xxx获取RequestBody中的参数 SQL中使用#{body.xxx}或${body.xxx}获取RequestBody中的参数 # 如何获取Header中的参数 脚本中使用header.xxx获取Header中的参数 SQL中使用#{header.xxx}或${header.xxx}获取Header中的参数 # 如何获取Cookie中的参数 脚本使用cookie.xxx获取Cookie中的参数 SQL中使用#{cookie.xxx}或${cookie.xxx}获取Cookie中的参数 # 如何获取Session中的参数 脚本中使用session.xxx获取Session中的参数 SQL中使用#{session.xxx}或{session.xxx}获取Session中的参数 # 如何获取PathVariable中的参数 脚本中使用PathVariableName或path.xxxx获取PathVariable中的参数 SQL中使用#{PathVariableName}或#{path.xxx}获取PathVariable中的参数 # 如何获取上传的文件 利用Request模块 import request; request.getFile('name'); # 如何获取提交的数组参数 利用Request模块 import request; return request.getValues('name'); # 如何给接口添加权限 一般情况采用拦截器实现 在接口选项中配置permisson或role或自定义选项 随后在拦截器实现: @Component @Order(1) //拦截器顺序 public class PermissionInterceptor implements RequestInterceptor { @Override public Object preHandle(ApiInfo info, MagicScriptContext context, MagicHttpServletRequest request, MagicHttpServletResponse response) { // 获取配置的接口选项属性 String permissionCode = info.getOptionValue(Options.PERMISSION); // 执行自己的代码逻辑进行判断是否有权限 // .... if(无权限){ // 需要注意的是,拦截器返回的不会走ResultProvider。 return new JsonBean<>(403,"无权访问"); } // 放行 return null; } } # 如何给UI添加权限 请参考自定义UI鉴权 # ${}和#{}的区别 主要区别在于${}用于拼接SQL(会产生SQL注入问题),#{}会替换成占位符(不会产生SQL注入问题),这里的区别与Mybatis一致 # 如何循环拼接参数 两种办法: * in (#{ids})的语法会自动对集合参数展开 var ids = [1,2,3,4,5,6]; //会自动变成select * from sys_user where id in(?,?,?,?,?,?) return db.select('select * from sys_user where id in(#{ids})'); * 循环拼接SQL var list = [1,2,3,4,5]; var sql = "select * from sys_user where "; for(index,item in list){ sql = sql + 'id = #{list['+index+']}'; if(index + 1 < list.size()){ sql = sql + ' or '; } } return db.select(sql); # 多数据源如何配置 编写java代码如下: @Bean public MagicDynamicDataSource magicDynamicDataSource(){ MagicDynamicDataSource dynamicDataSource = new MagicDynamicDataSource(); // 设置默认数据源(默认数据源一定要设置) dynamicDataSource.setDefault(ds1); dynamicDataSource.add("slave",ds2); return dynamicDataSource; } 脚本中使用: db.select('select * from sys_user'); //使用默认数据源 db.slave.select('select * from sys_user'); //使用slave数据源 # SQL执行报错java.sql.SQLFeatureNotSupportedException: null 原因:druid版本过低,升级至最新版后即可 # 如何自定义返回结果 * 通过配置文件进行配置,具体参考spring-boot配置 * 通过自定义JSON结果,具体定义方法查看自定义JSON结果 * 通过自定义拦截器拦截返回自己想要的格式,具体定义方法查看自定义拦截器 * 通过spring的拦截器返回想要的格式,如ResponseBodyAdvice,HandlerMethodReturnValueHandler(这种方式目前会影响到UI,故不推荐使用) # 页面加载缓慢 由于monaco-editor编辑器比较大,建议开启压缩静态资源 server.compression.enabled=true #启用压缩 server.compression.min-response-size=256 #大于256kb时压缩 # 脚本内容被转义 出现这种情况,请检查自身项目是否有XSS一类的过滤器,需要把UI界面对应的后台接口排除掉即可 # 执行测试无响应 目前已知有两种情况 * 使用了Spring Boot 2.3.5版本,升级至2.3.6解决 * 使用了nginx代理,加一条配置proxy_buffering off;解决 # 访问UI404 * 请检查访问路径是否正确 * 请检查magic-editor包是否被引入 * 如果是拉源码运行,则需要编译一下前端。 * 如果以上确定没问题,请检查应用中是否有关于mvc的配置,如果有请检查是否是extends WebMvcConfigurationSupport的形式,是的话,改成implements WebMvcConfigurer的形式。 * 如以上问题均不存在,请提ISSUE 或加群700818216反馈 # 无法DEBUG或无法查看日志 * 由于DEBUG和日志是依赖于WebSocket实现的,所以需要WebSocket支持 * 请检查Web容器是否支持WebSocket,如果不支持,需要引入对应依赖或更换支持WebSocket的Web容器 * 请检查是否使用了nginx之类的代理,如果使用了,需要对配置其支持WebSocket,样例如下: location /magic/web/console { proxy_pass http://localhost:9999; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 900s; } # 保存图片(Blob)数据到数据库 假设将图片的二进制数据传输到body.img中, sql可以这么写 var sql = """ insert into img_table( img ) values( #{img::sql('blob')} ) """; ::sql用法参考 类型转换

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Dwsy/magic-api-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server