版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yingziisme/article/details/97699565
swagger现在已经是主流api工具了,特别是前后端分离的开发模式的流行,基本上都会用它来生成接口文档
swagger官网
使用springboot来集成swagger也比较简单
首先在pom文件中引入相关的包
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
然后在启动类上加个注解,启动swagger
@EnableSwagger2
@SpringBootApplication
public class SpringCloudUploadSwaggerDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudUploadSwaggerDemoApplication.class, args);
}
}
再配置相应的bean
@Configuration
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
// 扫描的包路径
.apis(RequestHandlerSelectors.basePackage("com.mt.demo.upload.swagger.controller"))
.paths(PathSelectors.any())
.build();
}
// 一些说明配置
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("api文档")
.description("swagger接口")
.version("1.0")
.contact(new Contact("yingzi", "https://blog.csdn.net/yingziisme", "https://blog.csdn.net/yingziisme"))
.build();
}
}
然后就可以在相应的包下面的controller上使用相关的注解
controller层代码注解
@Slf4j
@RestController
@RequestMapping("/two")
@Api("ChapterTwo")
public class ChapterTwo {
@ApiOperation(value = "two", notes = "two", httpMethod = "POST")
@PostMapping("/post")
public ResultVO post(@Valid @RequestBody OneDTO oneDTO){
return ResultVO.success(oneDTO);
}
@ApiOperation(value = "two", notes = "two", httpMethod = "POST")
@PostMapping("/post1")
public ResultVO post(@Valid @RequestBody TwoDTO oneDTO){
return ResultVO.success(oneDTO);
}
}
相关的实体类注解
@Data
@ApiModel("One")
public class OneDTO {
private String user;
private String password;
}
@Data
@ApiModel("One")
public class TwoDTO {
private String mobile;
private String email;
}
一开始没有注意到是有两个实体类的ApiModel的值一样,看到这里的属性多了几个一脸懵逼,后来看了swagger请求的api-docs的内容才反应过来这个问题,swagger使用了ApiModel的值作为数据的key
将其中一个的ApiModel的值改掉就正常了
@Data
@ApiModel("Two")
public class TwoDTO {
private String mobile;
private String email;
}