最近在用solon框架开发web项目https://solon.noear.org/,框架本身支持挺多api文档的,因为其他项目文档都在一起,就想试试能不能上传到apifox一起管理。
先说结论
经过尝试,是可以适配apifox的idea插件,再上传到apifox的。
做法就是通过自定义规则,去识别solon的注解。期间遇到了一些问题,感谢apifox的工作人员解答和帮助排查问题。
示例demo github.com/huixiangyan…
generic.config=true
# 控制器类注解配置
generic.class.has.api=@org.noear.solon.annotation.Controller
generic.method.has.api=@org.noear.solon.annotation.Mapping
# 路径映射配置
generic.path[@org.noear.solon.annotation.Mapping]=@org.noear.solon.annotation.Mapping#value
generic.path[@org.noear.solon.annotation.Mapping]=@org.noear.solon.annotation.Mapping#path
# HTTP方法配置
generic.http.method[@org.noear.solon.annotation.Get]=GET
generic.http.method[@org.noear.solon.annotation.Post]=POST
generic.http.method[@org.noear.solon.annotation.Put]=PUT
generic.http.method[@org.noear.solon.annotation.Delete]=DELETE
generic.http.method[@org.noear.solon.annotation.Patch]=PATCH
generic.http.method[@org.noear.solon.annotation.Mapping]=ANY
# 方法API识别配置
generic.method.has.api=@org.noear.solon.annotation.Mapping
generic.method.has.api=@org.noear.solon.annotation.Get
generic.method.has.api=@org.noear.solon.annotation.Post
generic.method.has.api=@org.noear.solon.annotation.Put
generic.method.has.api=@org.noear.solon.annotation.Delete
generic.method.has.api=@org.noear.solon.annotation.Patch
# 参数类型配置
generic.param.as.json.body=@org.noear.solon.annotation.Body
generic.param.as.param.body=@org.noear.solon.annotation.Param
# 忽略字段配置
json.rule.field.ignore=@com.fasterxml.jackson.annotation.JsonIgnore
# 对象字段类型转换配置
json.rule.convert[java.time.LocalDateTime]=java.lang.String
json.rule.convert[java.time.LocalDate]=java.lang.String
json.rule.convert[java.time.LocalTime]=java.lang.String
json.rule.convert[java.util.Date]=java.lang.String
param.required=@org.noear.solon.validation.annotation.NotBlank
field.required=@org.noear.solon.validation.annotation.NotBlank
param.required=org.noear.solon.validation.annotation.Validated
field.required=org.noear.solon.validation.annotation.Validated
# body参数无法解析,加上这个就配置可以了
param.type[@org.noear.solon.annotation.Body]=body
理一下思路
我是早期接触过apifox,看过他们的文档。 这次遇到solon项目要上传文档,我心里就有一个大概想法,因为我知道apifox的idea插件是很灵活的。(这里插一句,他们插件是基于EasyYapi二开的,所以最后我是在EasyYapi的issues中找到详细配置的)。
我把如上配置改改之后,基本能适配solon项目了。但是遇到了 @Body的参数不能解析,再apifox工作人员的帮助下加上了 param.type[@org.noear.solon.annotation.Body]=body 配置。至此基本满足需求了。