Springboot2.0 整合 Swagger API 接口

springboot 版本为:2.0.1.RELEASE

swagger 版本为 2.8.0

1 maven  pom.xml 添加以下依赖:

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

2 创建类SwaggerConfig

package com.ganjiangps.wangdaibus.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.ApiInfo;
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(){
System.out.println("=============================================");
return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.ganjiangps.wangdaibus.controller.test"))
                .apis(RequestHandlerSelectors.basePackage("com.ganjiangps.wangdaibus.controller"))
               // .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))  //只显示加了注解的api
                  .paths(PathSelectors.any())
                .build();
}

private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("管理系统")
                .description("powered by By-Health")
                .termsOfServiceUrl("http://localhost:8080/swagger-ui.html")
                //.contact(contact)
                .version("1.0")
                .build();
    }

}


3 继承WebMvcConfigurationSupport 配置静态资源,注:解决访问404问题

//配置静态资源
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
         registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
  super.addResourceHandlers(registry);
}


4 新建api测试类:

package com.ganjiangps.wangdaibus.controller.test;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;


@Api(value="测试即可",consumes="1212")
@Controller
@RequestMapping("/swagger/test")
public class SwaggerTestController {
@ApiOperation(value="测试接口",notes="根据idid")
@ApiImplicitParam(name = "id", value = "d", required = true, dataType = "String")
@ResponseBody
@GetMapping("/test")
public String test(String id){
return "Hello Word!";
}
}



5启动项目,访问 http://localhost:8080/swagger-ui.html,出现下图配置成功

Springboot2.0 整合 Swagger API 接口


Swagger注解

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

  • @Api:修饰整个类,描述Controller的作用
  • @ApiOperation:描述一个类的一个方法,或者说一个接口
  • @ApiParam:单个参数描述
  • @ApiModel:用对象来接收参数
  • @ApiProperty:用对象接收参数时,描述对象的一个字段
  • @ApiResponse:HTTP响应其中1个描述
  • @ApiResponses:HTTP响应整体描述
  • @ApiIgnore:使用该注解忽略这个API
  • @ApiError :发生错误返回的信息
  • @ApiImplicitParam:一个请求参数
  • @ApiImplicitParams:多个请求参数


6 生成angualr6 需要的实体类和service文件

swagger 自动生成文件地址:https://editor.swagger.io/

访问 http://localhost:8080/v2/api-docs,把json内容复制过去 选择generate-client   =>  typescript-angular-client 就可以自动生成angualr 需要的service和model


Springboot2.0 整合 Swagger API 接口

完。。。。。