Skip to content

tdwu/japi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

######启动之前分析了swagger2,功能非常非常强大,比较偏向于rest风格,但不太满足公司项目的需求:

  • 1 code通过http status来表示,而不是在response body 的json中标识
  • 2 rest要求并期望用户定义实体,而项目中往往一个参数只有一个id和name,参数太少不太愿意构建实体
  • 3 如果不定义实体,无法描述再swagger的ApiParam中描述{name:李老师,address:{city:,prov:}}结构信息
  • 4 请求和返回格式,是需要添加共同的json格式,数据只是在json的data中传递,如{code:0,message:"",data{}};

######设计初衷是简单,适合项目需求的api辅助工具,大致如下:

  • 1 在开发一个接口时,通过注解方式将接口信息添加在接口上
  • 2 通过一个web模块,查询出所有api的json格式的描述数据
  • 3 通过ui在展示json的数据,供前端人员使用

######由于人力投入有限,目前只提供了html方式查看,spring mvc的接口开发。 功能目前还不是很全面,但比较适合我们公司的大部分项目使用场景和方式。

没有最好的框架,只有最适合的。如果你觉得用得顺手,并希望优化下去,欢迎加入..

######使用方式*

导入依赖

   <dependencies>
       <dependency>
           <groupId>io.github.tdwu</groupId>
           <artifactId>japi-core</artifactId>
           <version>0.0.1</version>
       </dependency>
       <dependency>
           <groupId>io.github.tdwu</groupId>
           <artifactId>japi-ui</artifactId>
           <version>0.0.1</version>
       </dependency>
   </dependencies>    
     
   @RestController
   @RequestMapping("/api/user/info")
   @Api(value = "登录", tags = "演示", module = "测试-用户模块")
   public class LoginController {
   
   
       @ApiMethod(value = "账号密码登录", note = "演示内容: 单个参数,不需要创建VO/DTO 类", params = {@ApiParam(value = "account", note = "账号")
               , @ApiParam("password")})
       @PostMapping(value = "/loginByPassword")
       public ResultEntity<UserToken> loginByPassword(@RequestBody JSONObject jsonObject) throws Exception {
           return ResultEntity.success();
       }
   
       @ApiMethod(value = "历史登录TOKEN查看-账号", note = "演示内容:1 参数对象级联关系 2 参数类型 3 分页类型递归处理,即多级泛型 4 返回为数组",
               params = {@ApiParam(value = "user.name"), @ApiParam("user.account")
                       , @ApiParam(value = "startTime", type = Date.class)})
       @PostMapping(value = "/selectPageBean")
       public ResultEntity<IPageBean<UserToken>> selectPageBean(@RequestBody JSONObject jsonObject) throws Exception {
           return ResultEntity.success();
       }
       
       @ApiMethod(value = "历史登录TOKEN查看--全查询条件", note = "演示内容:1 可以手动指定DTO/VO 类(paramType),2 进行参数的补充 3 参数为泛型时的支持 4 返回类型的补充"
               , paramType = UserInfo.class
               ,params = {@ApiParam(value = "team.id", note = "所属团队id,这是补充的一个参数"), @ApiParam(value = "team.status", type = UserStatus.class, note = "团队状态")}
               ,result = {@ApiParam(value = "data.sysCode", note = "当XXX情况下,存在(补充说明)")})
       @PostMapping(value = "/selectPageBeanAll")
       public ResultEntity<IPageBean<UserToken>> selectPageBeanAll(@RequestBody JSONObject jsonObject) throws Exception {
           return ResultEntity.success();
       } 
   }    
       
   @RestController
   @RequestMapping("/api/user/info")
   @Api(value = "个人信息", tags = "演示", module = "测试-用户模块")
   public class UserController {
   
       @ApiMethod(value = "获取用户信息1", note = "演示内容:1 参数数组 2 级联数组 3 属性对象引用描述(如leader字段)4 返回数组", params = {
               @ApiParam(value = "money", type = double.class)
               , @ApiParam("user.name"), @ApiParam("user.score[].name"), @ApiParam("user.score[].value")
               , @ApiParam(value = "user.imgs[]", note = "图片地址")
               , @ApiParam(value = "user.leader", type = UserInfo.class)})
       @PostMapping(value = "/getInfo1")
       public ResultEntity<Long[]> getInfo1(@RequestBody JSONObject jsonObject) throws Exception {
           return ResultEntity.success();
       }
   
       @ApiMethod(value = "获取用户信息2", note = "演示内容:1 参数 引用某个java Bean中的个字段 2 级联参数 引用javaBean中的字段 3 级联参数,直接引用javaBean"
               , params = {@ApiParam(value = "$sex", type = UserInfo.class, note = "引用bean里面的一个字段")
               , @ApiParam(value = "sex1 ", type = UserSex.class)
               , @ApiParam(value = "user.$sex", type = UserInfo.class, note = "引用bean里面的一个字段")
               , @ApiParam(value = "user.token", type = UserToken.class, note = "引用bean里面的一个字段")})
       @PostMapping(value = "/getInfo2")
       public ResultEntity<Long[]> getInfo2(@RequestBody JSONObject jsonObject) throws Exception {
           return ResultEntity.success();
       }    
   }    

api接口文档访问地址:/japi/index.html

效果:

blockchain

blockchain

blockchain

blockchain

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published