Swagger3.0直接导入Springfox Boot Starter就可以了
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter --><dependency> <groupID>io.springfox</groupID> <artifactID>springfox-boot-starter</artifactID> <version>3.0.0</version></dependency>
2.X版本需要导入Swagger2.0和UI
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --><dependency> <groupID>io.springfox</groupID> <artifactID>springfox-swagger-ui</artifactID> <version>2.9.2</version></dependency><!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --><dependency> <groupID>io.springfox</groupID> <artifactID>springfox-swagger2</artifactID> <version>2.9.2</version></dependency>
我们这里还是使用2.X版本
2. 配置Swaggerpackage com.wang.config;import org.springframework.context.annotation.Configuration;import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration//开启Swagger2@EnableSwagger2public class SwaggerConfig { }
注意
只要在Swagger配置类上加上@EnableSwagger2注解,就可以使用Swagger2了Swagger的地址为http://localhost:8080/swagger-ui.HTML3. Swagger配置1. 配置Swagger信息Swagger的Bean实例 ==> Docket
package com.wang.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import springfox.documentation.service.APIInfo;import springfox.documentation.service.Contact;import springfox.documentation.service.vendorExtension;import springfox.documentation.spi.documentationType;import springfox.documentation.spring.web.plugins.Docket;import springfox.documentation.swagger2.annotations.EnableSwagger2;import java.util.ArrayList;@Configuration//开启Swagger2@EnableSwagger2public class SwaggerConfig { //配置了Swagger的Docket的Bean实例 @Bean public Docket docket() { return new Docket(documentationType.SWAGGER_2) .APIInfo(APIInfo()); } //配置Swagger信息 APIInfo private APIInfo APIInfo() { //作者信息 Contact contact = new Contact("wang","https://www.cnblogs.com/wang-sky/","715180879@qq.com"); return new APIInfo( "我的Swagger接口文档","这是一个Swagger接口文档","V 1.0",contact,"Apache 2.0","http://www.apache.org/licenses/liCENSE-2.0",new ArrayList<vendorExtension>()); }}
这里修改的是Swagger页面的一些信息,结果如下
注意
Docket不要忘了注册Bean并返回一个new Docket返回的Docket要传入一个参数指定产生的文档的类型,我们这里使用 documentationType.SWAGGER_22. Swagger配置扫描接口Docket.select()
@Beanpublic Docket docket() { //RequestHandlerSelectors 配置要扫描接口的方式 /* basePackage 指定要扫描的包 any 扫描全部 none 都不扫描 withClassAnnotation 扫描类上的注解,参数是一个注解的反射对象,比如 withClassAnnotation(RestController.class) withMethodAnnotation 扫描方法上的注解 */ //paths 过滤的路径,需要传入PathSelectors.xxx 选择过滤的方式 return new Docket(documentationType.SWAGGER_2) .APIInfo(APIInfo()) .select() .APIs(RequestHandlerSelectors.basePackage("com.wang.controller")) .paths(PathSelectors.ant("/wang/**")) .build();}
注意
APIs 扫描,要传入RequestHandlerSelectors.xxx 指定扫描的方式basePackage 指定要扫描的包any 扫描全部none 都不扫描withClassAnnotation 扫描类上的注解,比如 withClassAnnotation(RestController.class)withMethodAnnotation 扫描方法上的注解paths 过滤的路径,需要传入PathSelectors.xxx 选择过滤的方式最后要.build(),建造者模式,同时由于这是链式编程,一定要写!select().XXX.XXX...bulID()是一套,中间可以写的方法是确定的,不能乱写3. 配置Swagger是否启动只在生产环境下使用Swagger,而在发布的时候不使用的方法
分别建立不同环境的yml
在application中选择启动的环境,这里选择生产环境
spring: profiles: active: dev
配置Swagger
//配置了Swagger的Docket的Bean实例@Beanpublic Docket docket(Environment environment) { //RequestHandlerSelectors 配置要扫描接口的方式 /* basePackage 指定要扫描的包 any 扫描全部 none 都不扫描 withClassAnnotation 扫描类上的注解,需要传入PathSelectors.xxx 选择过滤的方式 //设置要显示的Swagger环境 Profiles profiles = Profiles.of("dev"); //通过environment.acceptsProfiles,判断是否处在自己设定的环境当中 boolean flag = environment.acceptsProfiles(profiles); return new Docket(documentationType.SWAGGER_2) .APIInfo(APIInfo()) .select() .APIs(RequestHandlerSelectors.basePackage("com.wang.controller")) .paths(PathSelectors.ant("/wang/**")) .build() .enable(flag);}
注意
.enable只能在select().XXX.XXX....bulID() 外面写默认为true,如果为False,则Swagger不能在浏览器中访问要用 Profiles profiles = Profiles.of("dev"); 指定激活的环境的名字获得当前的生产环境(application指定的环境),要给Docket传入一个Environment对象,其中保存了当前环境的名字environment.acceptsProfiles(profiles); 利用此方法获得是否在给定环境的布尔值4. 配置api文档的分组.groupname("我的API")
配置多个分组,只需要配置多个Docket即可
4. 实体类配置1. 实体类的注解package com.wang.pojo;import io.swagger.annotations.API;import io.swagger.annotations.APIModel;import io.swagger.annotations.APIModelProperty;import lombok.Data;@Data//@API("注释")@APIModel("用户实体类")public class User { @APIModelProperty("用户名") private String username; @APIModelProperty("密码") private String password;}
@APIModel或者@API在类上
@APIModelProperty在属性上
属性为私有,要写getter才能取到属性名
结果显示在Model上
2. 接口类的注解package com.wang.controller;import com.wang.pojo.User;import io.swagger.annotations.APIOperation;import io.swagger.annotations.APIParam;import org.springframework.web.bind.annotation.GetMapPing;import org.springframework.web.bind.annotation.PostMapPing;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloController { @GetMapPing(value = "/hello") public String hello() { return "Hello!"; } //只要我们的接口中,返回值中存在实体类,他就会被扫描到Swagger中 @PostMapPing("/user") public User user() { return new User(); } //Operation接口 //Get请求中,如果添加了字段的注释@APIParam,Swagger无法测试 @APIOperation("Hello2接口") @GetMapPing("/hello2") public String hello2(String username) { return "hello " + username; } //Operation接口 @APIOperation("Hello3接口") @PostMapPing("/hello3") public User hello3(@APIParam("用户") User user) { return user; }}
注意
只要我们的接口中,返回值中存在实体类或者字符串,他就会被扫描到Swagger中@APIOperation 方法的注释@APIParm 参数的注释Get请求中,Swagger无法测试5. 总结我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息接口文档实时更新可以在线测试注意,在正式发布的时候,关闭Swagger(出于安全考虑,而且节省运行内存) 总结以上是内存溢出为你收集整理的SpringBoot-Swagger全部内容,希望文章能够帮你解决SpringBoot-Swagger所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)