当前位置:网站首页>【已解决】如何生成漂亮的静态文档说明页
【已解决】如何生成漂亮的静态文档说明页
2022-07-06 01:19:00 【菜鸟是大神】
最近经常被问 ITMuch API 文档页是怎么制作的,考虑到步骤略复杂,写篇手记总结下吧。
TIPS
ITMuch API 是个人在慕课网视频《 面向未来微服务:Spring Cloud Alibaba从入门到进阶 》的实战项目配套文档。
效果

总体步骤
- 整合Swagger,生成Swagger描述端点
/v2/api-docs - 使用
swagger2markup-maven-plugin,将/v2/api-docs生成ASCIIDOC文件; - 使用
asciidoctor-maven-plugin,将ASCIIDOC文件转换成HTML; - 部署
整合Swagger
TIPS
Swagger的使用非常简单,本文不展开探讨了,各位看官自行百度一下用法吧。
常用注解:
- @Api
- @ApiOperation
- @ApiModel
- @ApiModelProperty
加依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
<!-- swagger --> <!-- 之所以要排除,是因为如果不排除会报NumberFormatException的警告。 --> <!-- 参考:https://github.com/springfox/springfox/issues/2265--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> <exclusions> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> </exclusion> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> <version>1.5.21</version> </dependency> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> <version>1.5.21</version> </dependency>配置Swagger(按照自己的需要配置,下面的配置代码仅供参考)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
/** * @author itmuch.com */ @Configuration @EnableSwagger2 public class SwaggerConfiguration { /** * swagger 信息 * * @return 页面信息 */ private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("ITMuch API") .description("ITMuch API") .termsOfServiceUrl("") .version("1.0.0") .contact(new Contact("", "", "")).build(); } @Bean public Docket customImplementation() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.itmuch")) .paths(PathSelectors.any()) .build() .apiInfo(this.apiInfo()); //.globalOperationParameters(parameters); } }为接口Swagger注解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
@RestController @RequestMapping("/notices") @RequiredArgsConstructor(onConstructor = @__(@Autowired)) @Api(tags = "公告相关接口", description = "公告相关接口") public class NoticeController { /** * 查询最新的一条公告 * * @return 公告列表 */ @GetMapping("/newest") @ApiOperation(value = "查询最新的一条公告", notes = "用于:公告") public Notice findNewest() { return new Notice(); } } @AllArgsConstructor @NoArgsConstructor @Builder @Data @ApiModel("公告") public class Notice { /** * ID */ @ApiModelProperty("id") private Integer id; /** * 公告内容 */ @ApiModelProperty("公告内容") private String content; ... }
- 这样,应用启动完成后,就会有一个
/v2/api-docs端点,描述了你的API的信息。
生成ASCIIDOC
在pom.xml中添加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <build>
<plugins>
<plugin>
<groupId>io.github.swagger2markup</groupId>
<artifactId>swagger2markup-maven-plugin</artifactId>
<version>1.3.1</version>
<configuration>
<!-- api-docs访问url -->
<swaggerInput>http://localhost:8080/v2/api-docs</swaggerInput>
<!-- 生成为单个文档,输出路径 -->
<outputFile>src/docs/asciidoc/generated/all</outputFile>
<config>
<!-- ascii格式文档 -->
<swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage>
<swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy>
</config>
</configuration>
</plugin>
...
|
swagger2markup-maven-plugin 插件的作用是读取 http://localhost:8080/v2/api-docs 的信息,生成ASCIIDOC文档。当然你也可以生成其他格式,比如Markdown等等。
这款插件还有很多使用姿势,详见 GitHub - Swagger2Markup/swagger2markup-maven-plugin: A Swagger2Markup Maven Plugin
生成HTML
下面,只需要将ASCIIDOC转换成html就OK了,在pom.xml中添加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <build>
<plugins>
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId>
<version>1.5.6</version>
<configuration>
<!-- asciidoc文档输入路径 -->
<sourceDirectory>src/docs/asciidoc/generated</sourceDirectory>
<!-- html文档输出路径 -->
<outputDirectory>src/docs/asciidoc/html</outputDirectory>
<backend>html</backend>
<sourceHighlighter>coderay</sourceHighlighter>
<!-- html文档格式参数 -->
<attributes>
<doctype>book</doctype>
<toc>left</toc>
<toclevels>3</toclevels>
<numbered></numbered>
<hardbreaks></hardbreaks>
<sectlinks></sectlinks>
<sectanchors></sectanchors>
</attributes>
</configuration>
</plugin>
|
asciidoctor-maven-plugin 插件同样也有很多姿势,详见:GitHub - asciidoctor/asciidoctor-maven-plugin: A Maven plugin that uses Asciidoctor via JRuby to process AsciiDoc source files within the project.
生成的文件在 src/docs/asciidoc/html (看你插件上面的配置哈),然后你就可以弄个NGINX部署了。
使用
- 启动应用
- 执行
mvn swagger2markup:convertSwagger2markup生成ASCIIDOC - 执行
mvn asciidoctor:process-asciidoc生成html
边栏推荐
- Ubantu check cudnn and CUDA versions
- 2022年广西自治区中职组“网络空间安全”赛题及赛题解析(超详细)
- ORA-00030
- Mobilenet series (5): use pytorch to build mobilenetv3 and learn and train based on migration
- MySQL learning notes 2
- Zhuhai's waste gas treatment scheme was exposed
- Nmap: network detection tool and security / port scanner
- Three methods of script about login and cookies
- 一圖看懂!為什麼學校教了你Coding但還是不會的原因...
- Gartner发布2022-2023年八大网络安全趋势预测,零信任是起点,法规覆盖更广
猜你喜欢

毕设-基于SSM高校学生社团管理系统

基于DVWA的文件上传漏洞测试

Vulhub vulnerability recurrence 74_ Wordpress

Finding the nearest common ancestor of binary search tree by recursion

servlet(1)

Yii console method call, Yii console scheduled task

Basic process and testing idea of interface automation

2020.2.13

Vulhub vulnerability recurrence 75_ XStream

Unity | two ways to realize facial drive
随机推荐
Dede collection plug-in free collection release push plug-in
Crawler request module
Unity | two ways to realize facial drive
MySQL learning notes 2
MATLB | real time opportunity constrained decision making and its application in power system
MYSQL---查询成绩为前5名的学生
Live video source code, realize local storage of search history
朝招金安全吗 会不会亏损本金
Building core knowledge points
Idea sets the default line break for global newly created files
Zhuhai's waste gas treatment scheme was exposed
Daily practice - February 13, 2022
什么是弱引用?es6中有哪些弱引用数据类型?js中的弱引用是什么?
VSphere implements virtual machine migration
Recursive method to realize the insertion operation in binary search tree
[day 30] given an integer n, find the sum of its factors
Superfluid_ HQ hacked analysis
False breakthroughs in the trend of London Silver
How to get the PHP version- How to get the PHP Version?
Programmer growth Chapter 9: precautions in real projects