swagger
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-staticdocs</artifactId> <version>2.6.1</version> </dependency>
restdocs的依赖包
<dependency> <groupId>org.springframework.restdocs</groupId> <artifactId>spring-restdocs-mockmvc</artifactId> <version>${spring-restdocs.version}</version> <scope>test</scope> </dependency>
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId>
<version>${plugin-asciidoctor.version}</version>
<executions>
<execution>
<id>generate-docs</id>
<phase>prepare-package</phase>
<goals>
<goal>process-asciidoc</goal>
</goals>
<configuration>
<backend>html</backend>
<doctype>book</doctype>
<attributes>
<generated>${project.build.directory}/swagger</generated>
</attributes>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.springframework.restdocs</groupId>
<artifactId>spring-restdocs-asciidoctor</artifactId>
<version>${spring-restdocs.version}</version>
</dependency>
</dependencies>
</plugin>
package com.example.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import io.swagger.annotations.ApiOperation; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration // 让Spring来加载该类配置 @EnableSwagger2 // 启用Swagger2 public class Swagger2Config { /** * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等 * * @return Docket */ @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() // 此包路径下的类,才生成接口文档 .apis(RequestHandlerSelectors.basePackage("com.example.api")) // 加了ApiOperation注解的类,才生成接口文档 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any()) .build(); } /** * api文档的详细信息函数,注意这里的注解引用的是哪个 * * @return */ private ApiInfo apiInfo() { return new ApiInfoBuilder() // //大标题 .title("泉州地方文化网站接口") // 版本号 .version("1.0") // .termsOfServiceUrl("NO terms of service") // 描述 .description("后台服务API接口文档") // 作者 .contact("YYH ") // .contact(new Contact("admin", " ", " ")) // .license("The Apache License, Version 2.0") // .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html") .build(); } }
@RestController @RequestMapping("/api/user") @CrossOrigin @Api("用户管理") public class UserApi extends BaseApi { private static int ExpireTime = 1000 * 60; // redis中存储的过期时间 @Resource private RedisUtil redisUtil; @Autowired private UserService userService; @Autowired private AuthenticationService authenticationService; @UserLoginToken @PostMapping(value = "/getAll") @ApiOperation(value = "获取所有用户信息") public RestResponse<List<UserResponseVM>> getAll() throws Exception { List<User> userList = userService.getAll(); List<UserResponseVM> userVM = userList.stream().map(d -> { UserResponseVM vm = modelMapper.map(d, UserResponseVM.class); vm.setCreateTime(DateTimeUtil.dateFormat(d.getCreateTime())); return vm; }).collect(Collectors.toList()); return RestResponse.ok(userVM); } @UserLoginToken @PostMapping("/add") @ApiOperation(value = "添加用户") @ApiImplicitParam(name = "model", value = "用户信息", required = true, paramType = "body", dataType = "User") public RestResponse add(@RequestBody User model) throws Exception { userService.add(model); return RestResponse.ok(); } @UserLoginToken @DeleteMapping("/delete") @ApiOperation(value = "添加用户") public RestResponse delete(@ApiParam(value = "id", required = true) @RequestParam("id") Integer id) throws Exception { userService.delete(id); return RestResponse.ok(); }
使用spring restdocs和swagger两类工具结合成自定义式样的REST API文档
原文:https://www.cnblogs.com/yyh28/p/12524150.html