= Apigcc示例文档 :doctype: book :toc: left :toclevels: 3 :toc-title: 目录 :source-highlighter: highlightjs [%hardbreaks] 通过javadoc设置文档描述信息 优先级大于通过Environment.description()设置的值 == 文档说明 [%hardbreaks] 所有接口均使用Https调用 /app路径下的接口为app专用 /mini路径下的接口为小程序专用 == 欢迎使用Apiggs === 示例接口 请求 [source,HTTP ] ---- GET /greeting?name=apigcc HTTP/1.1 ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+name+|+String+||+apigcc+|+名称+ |=== 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "id" : 0, "content" : "" } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+id+|+long+||+0+|+编号+ |+content+|+String+|||+内容+ |=== == 用户模块(标题) [%hardbreaks] 用户示例模块文字描述(详情) 支持多行文字 === 用户详情信息 [%hardbreaks] 主动根据id获取用户的信息 请求 [source,HTTP ] ---- GET /users/{id} HTTP/1.1 ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+id+|+String+|||+用户编号+ |=== 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "code" : 0, "msg" : "", "data" : { "id" : 0, "name" : "", "age" : 0, "createAt" : "", "Sex" : "" } } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+code+|+int+||+0+|+返回码+ |+msg+|+String+|||+返回信息+ |+data+|+User+||| |+data.id+|+int+||+0+| |+data.name+|+String+|+NotBlank+|| |+data.age+|+Integer+|+Min(1) NotNull+|+0+| |+data.createAt+|+Date+||| |+data.Sex+|+String+|+NotBlank+|| |=== === 用户详情信息(根据email或电话号码) [%hardbreaks] 多路径适配 请求 [source,HTTP ] ---- GET /users/detail?email=&phone= HTTP/1.1 GET /users/info?email=&phone= HTTP/1.1 ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+email+|+String+||| |+phone+|+String+||| |=== 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "code" : 0, "msg" : "", "data" : { "id" : 0, "name" : "", "age" : 0, "createAt" : "", "Sex" : "" } } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+code+|+int+||+0+|+返回码+ |+msg+|+String+|||+返回信息+ |+data+|+User+||| |+data.id+|+int+||+0+| |+data.name+|+String+|+NotBlank+|| |+data.age+|+Integer+|+Min(1) NotNull+|+0+| |+data.createAt+|+Date+||| |+data.Sex+|+String+|+NotBlank+|| |=== === 用户信息新增 请求 [source,HTTP ] ---- POST /users HTTP/1.1 Content-Type: application/json { "id" : 0, "name" : "", "age" : 0, "birthday" : "", "tags" : [ "" ], "data" : [ ], "icons" : [ "" ], "attrs" : { "" : "" } } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+id+|+Integer+||+0+|+编号+ |+name+|+String+|+Size(min=5,max=20) NotEmpty+||+姓名+ |+age+|+int+|+Min(1)+|+0+|+年龄+ |+birthday+|+Date+|+NotNull+||+生日,还是推荐使用javadoc+ |+tags+|+List+|+Size(min=1,max=2)+||+用户标签+ |+data+|+List<>+||| |+icons+|+java.lang.String[]+|||+用户图标+ |+attrs+|+Map+||| |=== 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "code" : 0, "msg" : "" } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+code+|+int+||+0+|+返回码+ |+msg+|+String+|||+返回信息+ |+data+|+T+||| |=== === 用户信息更新 请求 [source,HTTP ] ---- PATCH /users HTTP/1.1 Content-Type: application/json { "id" : 0, "name" : "", "age" : 0, "birthday" : "", "tags" : [ "" ], "data" : [ ], "icons" : [ "" ], "attrs" : { "" : "" } } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+id+|+Integer+||+0+|+编号+ |+name+|+String+|+Size(min=5,max=20) NotEmpty+||+姓名+ |+age+|+int+|+Min(1)+|+0+|+年龄+ |+birthday+|+Date+|+NotNull+||+生日,还是推荐使用javadoc+ |+tags+|+List+|+Size(min=1,max=2)+||+用户标签+ |+data+|+List<>+||| |+icons+|+java.lang.String[]+|||+用户图标+ |+attrs+|+Map+||| |=== 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "code" : 0, "msg" : "" } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+code+|+int+||+0+|+返回码+ |+msg+|+String+|||+返回信息+ |+data+|+T+||| |=== === 用户列表信息查询 [%hardbreaks] 默认展示GET方法查询 返回集合类的结果 请求 [source,HTTP ] ---- GET /users/list?page=1&size=20 HTTP/1.1 ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+page+|+int+||+1+|+页码+ |+size+|+int+||+20+|+每页条数+ |=== 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "code" : 0, "msg" : "", "data" : [ { "id" : 0, "name" : "", "age" : 0, "createAt" : "", "Sex" : "" } ] } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+code+|+int+||+0+|+返回码+ |+msg+|+String+|||+返回信息+ |+data+|+List+||| |+data.[].id+|+int+||+0+| |+data.[].name+|+String+|+NotBlank+|| |+data.[].age+|+Integer+|+Min(1) NotNull+|+0+| |+data.[].createAt+|+Date+||| |+data.[].Sex+|+String+|+NotBlank+|| |=== === 用户列表信息搜索 [%hardbreaks] POST搜索时,请求参数将放在请求体中 请求 [source,HTTP ] ---- POST /users/search HTTP/1.1 q=&page=1&limit=20&totalPage=0&max=0&name=apigcc ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+q+|+String+|||+查询关键字+ |+page+|+int+||+1+|+第几页+ |+limit+|+int+||+20+|+每页条数+ |+totalPage+|+int+||+0+| |+max+|+int+||+0+| |+name+|+String+||+apigcc+|+名称+ |=== 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "code" : 0, "msg" : "", "data" : [ { "id" : 0, "name" : "", "age" : 0, "createAt" : "", "Sex" : "" } ] } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+code+|+int+||+0+|+返回码+ |+msg+|+String+|||+返回信息+ |+data+|+List+||| |+data.[].id+|+int+||+0+| |+data.[].name+|+String+|+NotBlank+|| |+data.[].age+|+Integer+|+Min(1) NotNull+|+0+| |+data.[].createAt+|+Date+||| |+data.[].Sex+|+String+|+NotBlank+|| |=== === 用户信息删除 [%hardbreaks] ResponseEntity、Model以及未知类型将忽略 请求 [source,HTTP ] ---- DELETE /users/{id} HTTP/1.1 ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+id+|+String+||| |=== 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "code" : 0, "msg" : "" } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+code+|+int+||+0+|+返回码+ |+msg+|+String+|||+返回信息+ |+data+|+T+||| |=== === 用户禁用 [%hardbreaks] 某些项目使用自定义的ArgumentResolver,让spring自动注入一些信息 restdoc在解析时,可通过env.ignoreTypes("UserDtails")来忽略这些 请求 [source,HTTP ] ---- PUT /users/{id}/disable HTTP/1.1 ---- 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "code" : 0, "msg" : "" } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+code+|+int+||+0+|+返回码+ |+msg+|+String+|||+返回信息+ |+data+|+T+||| |=== === 查询角色下的用户总数 请求 [source,HTTP ] ---- GET /users/role?role= HTTP/1.1 ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+role+|+Role+|||+枚举类型+ |=== 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "code" : 0, "msg" : "", "data" : 0 } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+code+|+int+||+0+|+返回码+ |+msg+|+String+|||+返回信息+ |+data+|+Integer+||+0+| |=== === 批量上传用户信息 请求 [source,HTTP ] ---- POST /users/batch HTTP/1.1 Content-Type: application/json [ { "id" : 0, "name" : "", "age" : 0, "birthday" : "", "tags" : [ "" ], "data" : [ ], "icons" : [ "" ], "attrs" : { "" : "" } } ] ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+[].id+|+Integer+||+0+|+编号+ |+[].name+|+String+|+Size(min=5,max=20) NotEmpty+||+姓名+ |+[].age+|+int+|+Min(1)+|+0+|+年龄+ |+[].birthday+|+Date+|+NotNull+||+生日,还是推荐使用javadoc+ |+[].tags+|+List+|+Size(min=1,max=2)+||+用户标签+ |+[].data+|+List<>+||| |+[].icons+|+java.lang.String[]+|||+用户图标+ |+[].attrs+|+Map+||| |=== 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "id" : 0, "name" : "", "age" : 0, "birthday" : "", "tags" : [ "" ], "data" : [ ], "icons" : [ "" ], "attrs" : { "" : "" } } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+id+|+Integer+||+0+|+编号+ |+name+|+String+|+Size(min=5,max=20) NotEmpty+||+姓名+ |+age+|+int+|+Min(1)+|+0+|+年龄+ |+birthday+|+Date+|+NotNull+||+生日,还是推荐使用javadoc+ |+tags+|+List+|+Size(min=1,max=2)+||+用户标签+ |+data+|+List<>+||| |+icons+|+java.lang.String[]+|||+用户图标+ |+attrs+|+Map+||| |=== == PageController === Hello with ResponseBody [%hardbreaks] ********* 由于带有@ResponseBody,restdoc将解析该Endpoint

hhh \********* ********* hhhh *********

class ************** {

} 请求 [source,HTTP ] ---- GET /page/hello HTTP/1.1 ---- 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "id" : 0, "content" : "" } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+id+|+long+||+0+|+编号+ |+content+|+String+|||+内容+ |=== === 未知的多泛型的tuple 演示 请求 [source,HTTP ] ---- GET /page/tuple HTTP/1.1 ---- 响应 [source,HTTP ] ---- HTTP/1.1 200 OK [ { "id" : 0, "name" : "", "age" : 0, "birthday" : "", "tags" : [ "" ], "data" : [ ], "icons" : [ "" ], "attrs" : { "" : "" } }, { "id" : 0, "name" : "", "age" : 0, "createAt" : "", "Sex" : "" } ] ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+?0.id+|+Integer+||+0+|+编号+ |+?0.name+|+String+|+Size(min=5,max=20) NotEmpty+||+姓名+ |+?0.age+|+int+|+Min(1)+|+0+|+年龄+ |+?0.birthday+|+Date+|+NotNull+||+生日,还是推荐使用javadoc+ |+?0.tags+|+List+|+Size(min=1,max=2)+||+用户标签+ |+?0.data+|+List<>+||| |+?0.icons+|+java.lang.String[]+|||+用户图标+ |+?0.attrs+|+Map+||| |+?1.id+|+int+||+0+| |+?1.name+|+String+|+NotBlank+|| |+?1.age+|+Integer+|+Min(1) NotNull+|+0+| |+?1.createAt+|+Date+||| |+?1.Sex+|+String+|+NotBlank+|| |=== === 多个RequestMethod 请求 [source,HTTP ] ---- GET /page/multiMethod HTTP/1.1 ---- 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "code" : 0, "msg" : "" } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+code+|+int+||+0+|+返回码+ |+msg+|+String+|||+返回信息+ |+data+|+T+||| |=== === multi 请求 [source,HTTP ] ---- POST /page/multi HTTP/1.1 Content-Type: application/json { "code" : 0, "msg" : "", "data" : { "wrapper" : "", "data" : [ { "id" : 0, "name" : "", "age" : 0, "birthday" : "", "tags" : [ "" ], "data" : [ ], "icons" : [ "" ], "attrs" : { "" : "" } } ] } } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+code+|+int+||+0+|+返回码+ |+msg+|+String+|||+返回信息+ |+data+|+Wrapper+||| |+data.wrapper+|+String+||| |+data.data+|+List+||| |+data.data.[].id+|+Integer+||+0+|+编号+ |+data.data.[].name+|+String+|+Size(min=5,max=20) NotEmpty+||+姓名+ |+data.data.[].age+|+int+|+Min(1)+|+0+|+年龄+ |+data.data.[].birthday+|+Date+|+NotNull+||+生日,还是推荐使用javadoc+ |+data.data.[].tags+|+List+|+Size(min=1,max=2)+||+用户标签+ |+data.data.[].data+|+List<>+||| |+data.data.[].icons+|+java.lang.String[]+|||+用户图标+ |+data.data.[].attrs+|+Map+||| |=== 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "code" : 0, "msg" : "", "data" : { "wrapper" : "", "data" : { "id" : 0, "name" : "", "age" : 0, "birthday" : "", "tags" : [ "" ], "data" : [ ], "icons" : [ "" ], "attrs" : { "" : "" } } } } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+code+|+int+||+0+|+返回码+ |+msg+|+String+|||+返回信息+ |+data+|+Wrapper+||| |+data.wrapper+|+String+||| |+data.data+|+UserDTO+||| |+data.data.id+|+Integer+||+0+|+编号+ |+data.data.name+|+String+|+Size(min=5,max=20) NotEmpty+||+姓名+ |+data.data.age+|+int+|+Min(1)+|+0+|+年龄+ |+data.data.birthday+|+Date+|+NotNull+||+生日,还是推荐使用javadoc+ |+data.data.tags+|+List+|+Size(min=1,max=2)+||+用户标签+ |+data.data.data+|+List<>+||| |+data.data.icons+|+java.lang.String[]+|||+用户图标+ |+data.data.attrs+|+Map+||| |=== === 引用二方Jar [%hardbreaks] 使用二方Jar的类时,代码解析器无法获取类上的注释,注解 只能获取属性的名称和类型 请求 [source,HTTP ] ---- POST /page/jar HTTP/1.1 Content-Type: application/json { "page" : 0, "size" : 0, "name" : "" } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+page+|+int+||+0+| |+size+|+int+||+0+| |+name+|+String+||| |=== 响应 [source,HTTP ] ---- HTTP/1.1 200 OK { "id" : 0, "name" : "", "man" : "" } ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+id+|+int+||+0+| |+name+|+String+||| |+man+|+String+||| |=== === 一个复杂的类型 List> 请求 [source,HTTP ] ---- GET /page/map HTTP/1.1 ---- 响应 [source,HTTP ] ---- HTTP/1.1 200 OK [ { "" : { "id" : 0, "name" : "", "age" : 0, "createAt" : "", "Sex" : "" } } ] ---- === 一个更复杂的类型 List>>> 请求 [source,HTTP ] ---- GET /page/map HTTP/1.1 ---- 响应 [source,HTTP ] ---- HTTP/1.1 200 OK [ { "" : { "code" : 0, "msg" : "", "data" : { "0" : { "id" : 0, "name" : "", "age" : 0, "createAt" : "", "Sex" : "" } } } } ] ---- === 一个问号类型 List>> 请求 [source,HTTP ] ---- GET /page/map HTTP/1.1 ---- 响应 [source,HTTP ] ---- HTTP/1.1 200 OK [ { "" : [ ] } ] ---- === 多级菜单 请求 [source,HTTP ] ---- GET /page/menus HTTP/1.1 ---- 响应 [source,HTTP ] ---- HTTP/1.1 200 OK [ { "id" : 0, "name" : "" } ] ---- [options="header"] |=== |+名称+|+类型+|+校验+|+默认+|+描述+ |+[].id+|+int+||+0+| |+[].name+|+String+||| |+[].menus+|+List

+||| |=== == 附录 === Code [options=""] |=== |+OK+|+0+|+ok+ |+ERROR+|+-1+|+error+ |+NoAuth+|+1+|+no auth+ |=== === StaticFinalCode [options=""] |=== |+SUCCESS+|+1+|+成功+ |+ERROR+|+-1+|+失败+ |=== === 用户角色 [options=""] |=== |+ADMIN+|+管理员+ |+USER+|+用户+ |+VIP+|+会员+ |===