当前位置:网站首页>【已解决】如何生成漂亮的静态文档说明页
【已解决】如何生成漂亮的静态文档说明页
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
边栏推荐
- CocoaPods could not find compatible versions for pod 'Firebase/CoreOnly'
- Logstash clear sincedb_ Path upload records and retransmit log data
- Live broadcast system code, custom soft keyboard style: three kinds of switching: letters, numbers and punctuation
- Huawei converged VLAN principle and configuration
- SPIR-V初窥
- Use of crawler manual 02 requests
- 3D model format summary
- Recommended areas - ways to explore users' future interests
- Vulhub vulnerability recurrence 74_ Wordpress
- Four dimensional matrix, flip (including mirror image), rotation, world coordinates and local coordinates
猜你喜欢
MATLB | real time opportunity constrained decision making and its application in power system
Exciting, 2022 open atom global open source summit registration is hot
Installation and use of esxi
MATLB|实时机会约束决策及其在电力系统中的应用
WordPress collection plug-in automatically collects fake original free plug-ins
Finding the nearest common ancestor of binary search tree by recursion
基於DVWA的文件上傳漏洞測試
Unity | 实现面部驱动的两种方式
SSH login is stuck and disconnected
VSphere implements virtual machine migration
随机推荐
Beginner redis
IP storage and query in MySQL
DOM introduction
Leetcode1961. Check whether the string is an array prefix
Blue Bridge Cup embedded stm32g431 - the real topic and code of the eighth provincial competition
Obstacle detection
A glimpse of spir-v
Cf:d. insert a progression [about the insert in the array + the nature of absolute value + greedy top-down]
Questions about database: (5) query the barcode, location and reader number of each book in the inventory table
Leetcode sword finger offer 59 - ii Maximum value of queue
How does Huawei enable debug and how to make an image port
基于DVWA的文件上传漏洞测试
一图看懂!为什么学校教了你Coding但还是不会的原因...
Basic process and testing idea of interface automation
How to extract MP3 audio from MP4 video files?
China Taiwan strategy - Chapter 8: digital marketing assisted by China Taiwan
JVM_ 15_ Concepts related to garbage collection
Huawei Hrbrid interface and VLAN division based on IP
Recursive method converts ordered array into binary search tree
Distributed base theory