六、springboot集成Swagger2

1.Swagger简介

  Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

2.Spring Boot 集成Swagger

一、修改pom.xml,添加maven依赖

        <!-- Swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>

二、添加Swagger配置类

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    
    @Bean
    public Docket createRestApi() {        
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("指定扫描的包路径"))
                .paths(PathSelectors.any())                  
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("大标题")
                .description("description")
                .termsOfServiceUrl("http://路径.com")
                .contact(new Contact("name", "http://name.com", "[email protected]"))//作者
                .version("1.0")//版本
                .build();
    }
    
    @SuppressWarnings("unused")
    private Predicate<String> petstorePaths() {
        return or(
                regex("/user.*"),
                regex("/cities.*")
        );
    }

}

  @Configuration让Spring来加载该类配置

  @EnableSwagger2启用Swagger2

  通过createRestApi函数创建Docket的Bean之后,apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现,本例采用指定扫描的包路径来定义,Swagger会扫描该包下所有Controller定义的API,并产生文档内容(除了被@ApiIgnore指定的请求)

3.添加文档内容

  在API上做一些声明:在Controller类中添加相关的swagger注解。但是有一个要求,这个Controller类一定要让上一步配置类的@ComponentScan扫描到

  swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

  swagger注释API详细说明

@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiError :发生错误返回的信息
@ApiParamImplicitL:一个请求参数
@ApiParamsImplicit 多个请求参数
@Api(tags={"积分接口"})
@RequestMapping("credit")
@RestController
public class CreidtController {

    @Autowired
    private CreditService creditService;
    
    @Autowired  
    private ConsulClient consulClient;
        
    private static Logger log = LoggerFactory.getLogger(CreidtController.class);

    /**
     * @param id
     * @return User
     */
    @ApiOperation(value = "根据用户ID获取可用积分", notes="包含各种类型积分")   
    @ApiImplicitParam(name = "id", value = "编号", required = true, paramType="path")
    @GetMapping("{id}")
    public Credit getuser(@PathVariable String id) {
        return null;
    }
    
    /**
     * @param serviceId
     */
    @ApiOperation(value="剔除服务实例", notes="剔除服务实例") 
    @ApiImplicitParam(name = "serviceId", value = "服务ID", required = true, paramType="path")
    @GetMapping("/clearService/{serviceId}")
    public void clearService(@PathVariable String serviceId) {
        log.info("下线服务-" + serviceId);
        consulClient.agentServiceDeregister(serviceId);
    }        
        
}

  完成上述代码添加上,启动Spring Boot程序,访问:http://localhost:8080/swagger-ui.html

  就能看到前文所展示的RESTful API的页面。我们可以再点开具体的API请求,以POST类型的/users请求为例,可找到上述代码中我们配置的Notes信息以及参数user的描述信息。

4.API文档访问与调试

  在上图请求的页面中,我们看到user的Value是个输入框?是的,Swagger除了查看接口功能外,还提供了调试测试功能,我们可以点击上图中右侧的Model Schema(黄色区域:它指明了User的数据结构),此时Value中就有了user对象的模板,我们只需要稍适修改,点击下方“Try it out!”按钮,即可完成了一次请求调用!

此时,你也可以通过几个GET请求来验证之前的POST请求是否正确。

参考:https://blog.csdn.net/Amethyst128/article/details/72877660
    swagger.io

猜你喜欢

转载自www.cnblogs.com/soul-wonder/p/8969192.html