当前位置:网站首页>[solved] how to generate a beautiful static document description page
[solved] how to generate a beautiful static document description page
2022-07-06 01:24:00 【A rookie is a great God】
Often asked recently ITMuch API How to make document pages , Considering the slightly complicated steps , Write a note to summarize .
TIPS
ITMuch API It's a personal video on Muke website 《 Microservices for the future :Spring Cloud Alibaba From entry to advanced 》 Supporting documents for practical projects .
effect
The overall steps
- Integrate Swagger, Generate Swagger Describe the endpoint
/v2/api-docs
- Use
swagger2markup-maven-plugin
, take/v2/api-docs
Generate ASCIIDOC file ; - Use
asciidoctor-maven-plugin
, take ASCIIDOC File conversion to HTML; - Deploy
Integrate Swagger
TIPS
Swagger Is very simple to use , This article will not discuss , Please check the usage of Baidu by yourself .
Commonly used annotations :
- @Api
- @ApiOperation
- @ApiModel
- @ApiModelProperty
Plus dependence
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 --> <!-- The reason to exclude , It is because if it is not excluded, it will report NumberFormatException Warning of . --> <!-- Reference resources :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>
To configure Swagger( Configure according to your own needs , The following configuration codes are for reference only )
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 Information * * @return Page information */ 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); } }
Interface for Swagger annotation
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 = " Announcement related interfaces ", description = " Announcement related interfaces ") public class NoticeController { /** * Check the latest announcement * * @return Announcement list */ @GetMapping("/newest") @ApiOperation(value = " Check the latest announcement ", notes = " be used for : Notice ") public Notice findNewest() { return new Notice(); } } @AllArgsConstructor @NoArgsConstructor @Builder @Data @ApiModel(" Notice ") public class Notice { /** * ID */ @ApiModelProperty("id") private Integer id; /** * Announcement content */ @ApiModelProperty(" Announcement content ") private String content; ... }
- such , After the application is started , There will be one
/v2/api-docs
Endpoint , Describe your API Information about .
Generate ASCIIDOC
stay pom.xml To add the following :
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 visit url --> <swaggerInput>http://localhost:8080/v2/api-docs</swaggerInput> <!-- Generate as a single document , The output path --> <outputFile>src/docs/asciidoc/generated/all</outputFile> <config> <!-- ascii Format document --> <swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage> <swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy> </config> </configuration> </plugin> ... |
swagger2markup-maven-plugin
The function of the plug-in is to read http://localhost:8080/v2/api-docs
Information about , Generate ASCIIDOC file . Of course, you can also generate other formats , such as Markdown wait .
This plug-in also has a lot of gestures , See GitHub - Swagger2Markup/swagger2markup-maven-plugin: A Swagger2Markup Maven Plugin
Generate HTML
below , Only need to ASCIIDOC convert to html Just OK 了 , stay pom.xml To add the following :
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 Document input path --> <sourceDirectory>src/docs/asciidoc/generated</sourceDirectory> <!-- html Document output path --> <outputDirectory>src/docs/asciidoc/html</outputDirectory> <backend>html</backend> <sourceHighlighter>coderay</sourceHighlighter> <!-- html Document format parameters --> <attributes> <doctype>book</doctype> <toc>left</toc> <toclevels>3</toclevels> <numbered></numbered> <hardbreaks></hardbreaks> <sectlinks></sectlinks> <sectanchors></sectanchors> </attributes> </configuration> </plugin> |
asciidoctor-maven-plugin
The plug-in also has many poses , See :GitHub - asciidoctor/asciidoctor-maven-plugin: A Maven plugin that uses Asciidoctor via JRuby to process AsciiDoc source files within the project.
The generated file is in src/docs/asciidoc/html
( Look at the configuration of your plug-in ), Then you can get a NGINX Deployed .
Use
- Start the application
- perform
mvn swagger2markup:convertSwagger2markup
Generate ASCIIDOC - perform
mvn asciidoctor:process-asciidoc
Generate html
边栏推荐
- Construction plan of Zhuhai food physical and chemical testing laboratory
- Electrical data | IEEE118 (including wind and solar energy)
- 电气数据|IEEE118(含风能太阳能)
- 【全網最全】 |MySQL EXPLAIN 完全解讀
- JMeter BeanShell的基本用法 一下语法只能在beanshell中使用
- About error 2003 (HY000): can't connect to MySQL server on 'localhost' (10061)
- What is weak reference? What are the weak reference data types in ES6? What are weak references in JS?
- 一图看懂!为什么学校教了你Coding但还是不会的原因...
- FFT learning notes (I think it is detailed)
- Distributed base theory
猜你喜欢
【已解决】如何生成漂亮的静态文档说明页
Mlsys 2020 | fedprox: Federation optimization of heterogeneous networks
Yii console method call, Yii console scheduled task
Who knows how to modify the data type accuracy of the columns in the database table of Damon
ORA-00030
How to see the K-line chart of gold price trend?
Electrical data | IEEE118 (including wind and solar energy)
Five challenges of ads-npu chip architecture design
Mobilenet series (5): use pytorch to build mobilenetv3 and learn and train based on migration
Recoverable fuse characteristic test
随机推荐
A glimpse of spir-v
Mobilenet series (5): use pytorch to build mobilenetv3 and learn and train based on migration
Basic process and testing idea of interface automation
WGet: command line download tool
Modify the ssh server access port number
Condition and AQS principle
网易智企逆势进场,游戏工业化有了新可能
ORA-00030
Vulhub vulnerability recurrence 75_ XStream
Installation and use of esxi
Unity | two ways to realize facial drive
基於DVWA的文件上傳漏洞測試
Test de vulnérabilité de téléchargement de fichiers basé sur dvwa
MySQL learning notes 2
Opinions on softmax function
黄金价格走势k线图如何看?
Questions about database: (5) query the barcode, location and reader number of each book in the inventory table
Paging of a scratch (page turning processing)
ctf. Show PHP feature (89~110)
282. Stone consolidation (interval DP)