SpringBoot整合Swagger2

2020-02-17  本文已影响0人  97_灰太狼

SpringBoot整合Swagger2的好处就是接口文档方便进行维护

1.加入依赖包,pom.xml:

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

2.增加个配置类:

package com.cxh.springboot_elasticsearch.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .pathMapping("/")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.cxh.springboot_elasticsearch.controller"))//扫描接口的包
                .paths(PathSelectors.any())
                .build().apiInfo(new ApiInfoBuilder()
                        .title("SpringBoot整合Swagger")
                        .description("SpringBoot整合Swagger,详细信息......")
                        .version("9.0")
                        .build());
    }
}

通过@EnableSwagger2注解启用Swagger2,然后配置一个Docket Bean,这个Bean中,配置映射路径和要扫描的接口的位置,在apiInfo中,主要配置一下Swagger2文档网站的信息,例如网站的title,网站的描述,联系人的信息,使用的协议等等,这样Swagger2就配置成功了。

3.在需要的类,方法上加上Swagger2的注解进行说明:

import com.cxh.springboot_elasticsearch.entity.Book;
import com.cxh.springboot_elasticsearch.service.BookService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Optional;

@RestController
@Api(tags = "es操作管理接口")
public class ElasticController {

    @Autowired
    private BookService bookService;

    @RequestMapping("/book/{id}")
    @ApiOperation("查询书的接口")
    @ApiImplicitParam(name = "id", value = "书本id", required = true)
    public Book getBookById(@PathVariable String id){
        Optional<Book> opt =bookService.findById(id);
        Book book=opt.get();
        System.out.println(book);
        return book;
    }
}

@Api注解可以用来标记当前Controller的功能。
@ApiOperation注解用来标记一个方法的作用。
@ApiImplicitParam注解用来描述一个参数,可以配置参数的中文含义,也可以给参数设置默认值,这样在接口测试的时候可以避免手动输入。
如果有多个参数,则需要使用多个@ApiImplicitParam注解来描述,多个@ApiImplicitParam注解需要放在一个@ApiImplicitParams注解中。
具体的可以看Swagger2的api。

  1. 启动项目:浏览器打开地址:http://localhost:8080/swagger-ui.html
image.png

个人座右铭:主动 行动 思考 反省 总结

上一篇下一篇

猜你喜欢

热点阅读