接口文档生成工具,天呐!用这个工具生成接口文档也太好用啦

4747 446 2022-08-05


本文是关于接口文档生成工具-接口文档。

好用的在线文档生成工具,具体要求如下:


 


1.必须是开源的


2.能够实时生成在线文档


3.支持全文搜索


4.支持在线调试功能


5.界面优美


 


说实话,这个需求看起来简单,但是实际上一点的都不简单。


 


我花了几天时间到处百度,谷歌,技术博客 和 论坛查资料,先后调研了如下文档生成工具:


一、gitbook

github地址:https://github.com/GitbookIO/gitbook


开源协议:Apache-2.0 License


Star: 22.9k


开发语言:javascript


用户:50万+


示例地址:https://www.servicemesher.com/envoy/intro/arch_overview/dynamic_configuration.html




 


GitBook是一款文档编辑工具。它的功能类似金山WPS中的Word或者微软Office中的Word的文档编辑工具。它可以用来写文档、建表格、插图片、生成pdf。当然,以上的功能WPS、Office可能做得更好,但是,GitBook还有更最强大的功能:它可以用文档建立一个网站,让更多人了解你写的书,另外,最最核心的是,他支持Git,也就意味着,它是一个分布式的文档编辑工具。你可以随时随地来编写你的文档,也可以多人共同编写文档,哪怕多人编写同一页文档,它也能记录每个人的内容,然后告诉你他们之间的区别,也能记录你的每一次改动,你可以查看每一次的书写记录和变化,哪怕你将文档都删除了,它也能找回来!这就是它继承Git后的厉害之处!


 


优点:使用起来非常简单,支持全文搜索,可以跟git完美集成,对代码无任何嵌入性,支持markdown格式的文档编写。


 


缺点:需要单独维护一个文档项目,如果接口修改了,需要手动去修改这个文档项目,不然可能会出现接口和文档不一致的情况。并且,不支持在线调试功能。


 


个人建议:如果对外的接口比较少,或者编写之后不会经常变动可以用这个。


二、smartdoc

gitee地址:https://gitee.com/smart-doc-team/smart-doc


开源协议:Apache-2.0 License


Star: 758


开发语言:html、javascript


用户:小米、科大讯飞、1加


示例地址:https://gitee.com/smart-doc-team/smart-doc/wikis/文档效果图?sort_id=1652819




 


smart-doc是一个java restful api文档生成工具,smart-doc颠覆了传统类似swagger这种大量采用注解侵入来生成文档的实现方法。smart-doc完全基于接口源码分析来生成接口文档,完全做到零注解侵入,只需要按照java标准注释的写就能得到一个标准的markdown接口文档。


 


优点:基于接口源码分析生成接口文档,零注解侵入,支持html、pdf、markdown格式的文件导出。


 


缺点:需要引入额外的jar包,不支持在线调试


 


个人建议:如果实时生成文档,但是又不想打一些额外的注解,比如:使用swagger时需要打上@Api、@ApiModel等注解,就可以使用这个。


三、redoc

github地址:https://github.com/Redocly/redoc


开源协议:MIT License


Star: 10.7K


开发语言:typescript、javascript


用户:docker、redocly


示例地址:https://docs.docker.com/engine/api/v1.40/




 


redoc自己号称是一个最好的在线文档工具。它支持swagger接口数据,提供了多种生成文档的方式,非常容易部署。使用redoc-cli能够将您的文档捆绑到零依赖的 HTML文件中,响应式三面板设计,具有菜单/滚动同步。


 


优点:非常方便生成文档,三面板设计


 


缺点:不支持中文搜索,分为:普通版本 和 付费版本,普通版本不支持在线调试。另外UI交互个人感觉不适合国内大多数程序员的操作习惯。


 


个人建议:如果想快速搭建一个基于swagger的文档,并且不要求在线调试功能,可以使用这个。


 


四、knife4j

gitee地址:https://gitee.com/xiaoym/knife4j


开源协议:Apache-2.0 License


Star: 3k


开发语言:java、javascript


用户:未知


示例地址:http://swagger-bootstrap-ui.xiaominfo.com/doc.html




 


knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍。


 


优点:基于swagger生成实时在线文档,支持在线调试,全局参数、国际化、访问权限控制等,功能非常强大。


 


缺点:界面有一点点丑,需要依赖额外的jar包


 


个人建议:如果公司对ui要求不太高,可以使用这个文档生成工具,比较功能还是比较强大的。


 


五、yapi

github地址:https://github.com/YMFE/yapi


开源协议:Apache-2.0 License


Star: 17.8k


开发语言:javascript


用户:腾讯、阿里、美团、百度、京东等大厂


示例地址:http://swagger-bootstrap-ui.xiaominfo.com/doc.html




 


yapi是去哪儿前端团队自主研发并开源的,主要支持以下功能:


可视化接口管理

数据mock

自动化接口测试

数据导入(各种,包括swagger、har、postman、json、命令行)

权限管理

支持本地化部署

支持插件

支持二次开发

优点:功能非常强大,支持权限管理、在线调试、接口自动化测试、插件开发等,BAT等大厂等在使用,说明功能很好。


缺点:在线调试功能需要安装插件,用户体检稍微有点不好,主要是为了解决跨域问题,可能有安全性问题。不过要解决这个问题,可以自己实现一个插件,应该不难。


个人建议:如果不考虑插件安全的安全性问题,这个在线文档工具还是非常好用的,可以说是一个神器,笔者在这里强烈推荐一下。

今天就给大家介绍一款接口管理神器swagger2Swagger2 的出现就是为了从根本上解决上述问题,它作为一个规范和完整的框架,可以用于生成、描述、调用和可视化 RESTful 风格的 Web 服务:

  1. 接口文档在线自动生成
  2. 文档随接口变动实时更新,节省维护成本
  3. 支持在线接口测试,不依赖第三方工具

pom依赖

<!--swagger2-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>3.0.2</version>
</dependency>

创建一个config类,用于配置swagger2

@Configuration
@EnableSwagger2//开启swagger2
@EnableKnife4j//启用swagger2的一个ui样式
public class Swagger2Config {
    @Bean
    public Docket createRestApi() {
        return  new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example"))//扫描哪个包下的接口
                .paths(PathSelectors.any()) // 可以根据url路径设置哪些请求加入文档,忽略哪些请求 Swagger 会扫描该包下所有 Controller 定义的 API,并产生文档内容(除了被 @ApiIgnore 指定的请求)
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("lesson16接口api文档")//标题文字
                .description("接口api文档")//接口描述
                .contact(new Contact("skywalker","http://www.baidu.com","53816565@qq.com"))//联系人相关信息
                .termsOfServiceUrl("http://localhost:8080/")//设置文档的License信息
                .version("1.0")//接口版本号
                .build();
    }
}

rest接口

@Api(tags = "用户相关api")
@Slf4j
@RestController
public class UserController {
    @ApiOperation("根据用户id获取详细")
    @GetMapping("detail")
    public String detail(@RequestParam(value = "userId")@ApiParam("用户id") String userId) {
        //TODO: 实际业务处理
        return "OK";
    }

    @ApiOperation("保存新用户")
    @PostMapping("save")
    public UserDto save( @RequestBody UserDto dto){
        return new UserDto();
    }
}
@ApiModel("用户对象")
@Data
public class UserDto {
    @ApiModelProperty(value = "用户名",required = true)
    private String username;
    @Enumerated(EnumType.STRING)
    @ApiModelProperty("性别")
    private SexEnum sex;
    @ApiModelProperty(value = "密码",required = true)
    private String password;
    @ApiModelProperty("年龄")
    private Integer age;
    @ApiModelProperty("邮箱")
    private String email;
}
  • @Api:【类】修饰整个类,描述Controller的作用,该标签中有个tags属性,不同类中相同的tags标签值的会在文档中归为一类
  • @ApiOperation:【rest方法】描述一个类的一个方法,或者说一个接口
  • @ApiParam:【rest中的get参数】单个参数描述
  • @ApiModel:【入/出参对象】用对象来接收参数
  • @ApiProperty:【入/出参对象中的属性字段】用对象接收参数时,描述对象的一个字段
  • @ApiResponse:HTTP响应其中1个描述--用的少
  • @ApiResponses:HTTP响应整体描述--用的少
  • @ApiIgnore:使用该注解忽略这个API--用的少
  • @ApiError:发生错误返回的信息--用的少
  • @ApiImplicitParam:描述一个请求参数,可以配置参数的中文含义,还可以给参数设置默认值--用的少
  • @ApiImplicitParams:描述由多个 @ApiImplicitParam 注解的参数组成的请求参数列表--用的少

配置完毕后打开浏览器,输入 http://localhost:8080/doc.html

这个ui界面中可用的信息非常多,甚至,你可以在还可以在页面请求后台调试代码

如果你是对接第三方,给第三方提供接口,但是又不想把整个接口的在线地址给他,那你还可以导出离线文档,还支持多种格式。

大部分的请求都需要携带令牌访问后台,每个swaggerapi调试的时候都自己写令牌添加进去,非常麻烦,swagger也为大家想到了。

怎么样,是不是很好用,而且代码也非常简洁,没有侵入性。快快get起来,跟前端的小伙伴愉快的玩耍吧!!!

以上就是小编为大家整理的接口文档生成工具-接口文档。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于Java实现无向环和有向环的检测
下一篇:使用swagger实现web api在线接口文档,最新在线接口文档管理工具推荐
相关文章

 发表评论

暂时没有评论,来抢沙发吧~