首页 > 编程语言 > 详细

使用spring restdocs和swagger两类工具结合成自定义式样的REST API文档

时间:2020-03-19 15:24:56      阅读:50      评论:0      收藏:0      [点我收藏+]

1 pom文件配置

1.1 加入依赖包

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>        

1.2 加入restdocs插件

<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>

2 创建Swagger2配置类

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();
    }

}

3 使用方法

@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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!