Swagger2安装使用

Catalogue
  1. Swagger2安装使用

Swagger2安装使用

  1. Maven依赖安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <!-- swagger2 -->
    <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>
  2. Swagger的Java配置文件

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    package cn.exrick.swagger;

    import io.swagger.annotations.ApiOperation;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;

    /**
    * Created by Exrick on 2017/8/15.
    */
    @Configuration //让Spring来加载该类配置
    @EnableWebMvc //非SpringBoot需启用
    @EnableSwagger2 //启用Swagger2
    public class Swagger2Config {
    static final Logger log= LoggerFactory.getLogger(Swagger2Config.class);
    @Bean
    public Docket createRestApi() {
    log.info("加载Swagger2");
    return new Docket(DocumentationType.SWAGGER_2)
    .apiInfo(apiInfo()).select()
    //扫描指定包中的swagger注解
    //.apis(RequestHandlerSelectors.basePackage("cn.exrick.controller"))
    //扫描所有有注解的api,用这种方式更灵活
    .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
    .paths(PathSelectors.any())
    .build();
    }

    private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
    .title("XMall Api Documentation")
    .description("XMall商城API接口文档")
    .termsOfServiceUrl("http://blog.exrick.cn")
    .contact(new Contact("Exrick", "http://blog.exrick.cn", "1012139570@qq.com"))
    .version("1.0.0")
    .build();
    }
    }
  3. Controller中API文档说明注解添加

    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
    38
    package cn.exrick.controller;

    import cn.exrick.common.utils.XMallResult;
    import cn.exrick.pojo.DataTablesResult;
    import cn.exrick.pojo.TbMember;
    import cn.exrick.service.MemberService;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;


    /**
    * Created by Exrick on 2017/8/11.
    */
    @RestController
    @Api(description= "会员列表信息")
    public class MemberController {

    @Autowired
    private MemberService memberService;

    /**
    * 分页搜索查询会员
    * @param draw
    * @param start
    * @param length
    * @param search
    * @return
    */
    @RequestMapping(value = "/member/list",method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "分页搜索获取会员列表")
    public DataTablesResult getMemberList(int draw, int start, int length, @RequestParam("search[value]") String search){
    DataTablesResult result=memberService.getMemberList(draw,start,length,search);
    return result;
    }
    }
  4. 按常规, 现在访问 http://localhost:8090/swagger-ui.html 应该能看到效果了, 但出现404

  1. 使用总结
1
2
3
4
5
6
7
8
@ApiOperation(value = "获取图片资源",response = byte[].class,produces = "application/json;charset=UTF-8")
@ApiResponses({
@ApiResponse(code=404,message="没有找到该图片")
})
@GetMapping(value = "/files/images/{id}",produces = "image/jpeg;image/png;image/gif")
public ResponseEntity<String> getImg(@PathVariable("id") long id) {
return new ResponseEntity<String>(fileService.getFileBydId(id), HttpStatus.OK);
}