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,出现下图配置成功
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
完。。。。。