当前位置:网站首页>[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
边栏推荐
- [机缘参悟-39]:鬼谷子-第五飞箝篇 - 警示之二:赞美的六种类型,谨防享受赞美快感如同鱼儿享受诱饵。
- Hundreds of lines of code to implement a JSON parser
- Test de vulnérabilité de téléchargement de fichiers basé sur dvwa
- FFT 学习笔记(自认为详细)
- MATLB|实时机会约束决策及其在电力系统中的应用
- Convert binary search tree into cumulative tree (reverse middle order traversal)
- Mysql--- query the top 5 students
- A picture to understand! Why did the school teach you coding but still not
- MUX VLAN configuration
- golang mqtt/stomp/nats/amqp
猜你喜欢
普通人下场全球贸易,新一轮结构性机会浮出水面
Leetcode study - day 35
VMware Tools installation error: unable to automatically install vsock driver
ADS-NPU芯片架构设计的五大挑战
282. Stone consolidation (interval DP)
Recommended areas - ways to explore users' future interests
Huawei converged VLAN principle and configuration
Some features of ECMAScript
1791. Find the central node of the star diagram / 1790 Can two strings be equal by performing string exchange only once
测试/开发程序员的成长路线,全局思考问题的问题......
随机推荐
【第30天】给定一个整数 n ,求它的因数之和
Condition and AQS principle
Hcip---ipv6 experiment
Zhuhai's waste gas treatment scheme was exposed
Finding the nearest common ancestor of binary tree by recursion
A picture to understand! Why did the school teach you coding but still not
视频直播源码,实现本地存储搜索历史记录
Test de vulnérabilité de téléchargement de fichiers basé sur dvwa
c#网页打开winform exe
2022年广西自治区中职组“网络空间安全”赛题及赛题解析(超详细)
XSS learning XSS lab problem solution
How to get the PHP version- How to get the PHP Version?
Fibonacci number
A Cooperative Approach to Particle Swarm Optimization
Idea sets the default line break for global newly created files
MATLB | real time opportunity constrained decision making and its application in power system
DOM introduction
普通人下场全球贸易,新一轮结构性机会浮出水面
Leetcode 208. 实现 Trie (前缀树)
The growth path of test / development programmers, the problem of thinking about the overall situation