在swagger项目中添加swagger包
<!--swagger-->
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<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>
使用注解启动swagger
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerApp {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("Spring Boot 使用Swagger 构建RestFul API")
.contact(new Contact("cmf","https://blog.csdn.net/chai_cmf/",":"))
.version("1.0")
.description("API 描述")
.build();
}
}
在application启动类中添加@ComponentScan(basePackages = "com.xxx.config")
@SpringBootApplication
@ComponentScan(basePackages = "com.xxx")
public class SwaggerApplication {
public static void main(String[] args) {
SpringApplication.run(SwaggerApplication.class, args);
}
}
在浏览器中输入项目的访问地址后面加上/swagger-ui.html
创建controller类
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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;
//tags 说明该类得作用,可以在UI界面上看到得注解
//descriptiond 说明的描述
@Api(tags = "查询接口",description = "第一个swagger学习")
@Controller
@RequestMapping("/swagger")
public class SwaggerController {
//给接口添加描述信息
@ApiOperation("新增用户接口")
@GetMapping("/select")
public @ResponseBody String select(){
return "hello world";
}
}
swagger-ui.html
注解:
必填 @Api(tags = "",description = "",value ="" )
tag:说明类的作用可以在ui界面上看到
description:描述信息
value:说明类的作用
@Api(tags = "查询接口",description = "第一个swagger学习",value ="访问" )
@ApiOperation(notes="",value="") 必填
notes:该方法的作用何用
value:说明该方法的作用和用途 显示在UI界面上
//给接口添加描述信息
@ApiOperation(notes = "查询helloworld",value = "查询hello world 返回String")
@GetMapping("/select")
public @ResponseBody String select(){
return "hello world";
}
非必填@ApimplicitParams 可用在方法上,表明一组参数的说明
name:参数名 value:参数的具体意义 required:是否必填 dataType:参数的数据类型 paramType:查询参数类型有以下几种形式
类型 | 作用 |
---|---|
path | 以地址的形式提交数据 |
query | 直接跟参数完成自动映射赋值 |
body | 以流的形式提交 仅支持POST |
header | 参数在request headers 里边提交 |
form | 以form表单的形式提交 仅支持POST |
示例:
//给接口添加描述信息
@ApiOperation(notes = "返回id",value = "根据传递的id返回数据")
@ApiImplicitParams({
@ApiImplicitParam(name = "id",value = "swagger的id",required = true,dataType = "String",paramType = "query"),
})
@GetMapping("/getId")
public @ResponseBody String getId(String id,String name){
return "id="+id+"----name="+name;
}
非必填 @ApiResponse : 用在请求得到方法上,并表示一组相应
@ApiOperation(notes="显示ApiResponsed的作用",value = "apiResponse的使用")
@ApiResponses({
@ApiResponse(code=400,message="请求参数没填好"),
@ApiResponse(code = 404,message = "请求路径版本不对,或者路径跳转不对")
})
@GetMapping("apiResponse")
public @ResponseBody String LookResponse(){
return "apiResponse";
}
非必填@ApiParam 用在请求方法中,描述参数信息
name:参数名称,参数名称可以覆盖方法参数名称,路径参数必须与方法参数一致
value: 参数的简要说明
defaultValue 参数的默认值
required 属性是否必填,默认为false
//给接口添加描述信息
@ApiOperation(notes = "返回id",value = "根据传递的id返回数据")
@ApiImplicitParams({
@ApiImplicitParam(name = "id",value = "swagger的id",required = true,dataType = "String",paramType = "query"),
})
@GetMapping("/getId")
public @ResponseBody String getId(String id,@ApiParam(name="name",value = "名称",required = false) @RequestParam(value = "name", required = false)String name){
return "id="+id+"----name="+name;
}
【非必填】@ApiIgnore用在类或者方法上,表明在swagger2中忽略这个类或者方法或者参数
生产环境中要是禁用swagger 在配置类中增加profile的限制
@Profile("uat")
@ApiModel
用于对类的说明。用于实体类接受
@ApiModelProperty
用于方法,字段,表示对model属性的额说明或者数据操作更改
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
@ApiModel(value = "User",description = "用户")
public class UserDto implements Serializable {
@ApiModelProperty(value = "ID",required = true)
private String id;
}