参考文档1:https://blog.csdn.net/weixin_37490221/article/details/86091514
参考文档2:https://blog.csdn.net/weixin_37490221/article/details/86144452
参考文档3:https://www.cnblogs.com/cosmosray/p/13268796.html
参考文档4:http://springfox.github.io/springfox/
依赖项
org.springframework.boot:spring-boot-starter-web:
org.springframework.boot:spring-boot-starter-test
org.projectlombok: lombok
io.springfox:springfox-swagger2:2.8.0
io.springfox:springfox-swagger-ui:2.8.0
com.google.guava:guava:30.1.1-jre
代码
配置文件SpringfoxSwagger2Config.java
import com.google.common.base.Predicate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
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;
import static com.google.common.base.Predicates.*;
import static springfox.documentation.builders.PathSelectors.*;
@Configuration
@EnableSwagger2
@ComponentScan(basePackages = "com.liteng.SwaggerTest.controller")
public class SpringfoxSwagger2Config {
@Bean
public Docket swaggerSpringMvcPlugin() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(swaggerDemoApiInfo())
.select()
.paths(allowPaths())
.build();
}
private ApiInfo swaggerDemoApiInfo() {
Contact contact = new Contact("枣面包", "http:~/~/www.zaomianbao.com", "zaomianbao@163.com");
return new ApiInfoBuilder()
.contact(contact)
.title("Swagger2构建RESTful API文档")
.description("SpringBoot集成Springbox开源项目,实现OAS,构建成RESTful API文档")
.version("1.0.0")
.build();
}
/~*~*
~* path匹配规则
*
~* @return
*/
private Predicate
return or(
regex("/user.*"),
regex("/role.*")
);
}
}
实体User.java
@Data
@Builder
public class User {
private String username;
private Integer age;
}
控制器UserController.java
@RestController
@RequestMapping("/user")
@Api(value
"", tags
"用户控制器")public class UserController {
@GetMapping("/list")
@ApiIgnore
public Object getUserList() {
return Arrays.asList(User.builder().age(18).username("枣面包").build());
}
@PostMapping("create")
@ApiOperation(value = "创建用户")
@ApiResponses({
@ApiResponse(code
200, message
"执行成功"),@ApiResponse(code
300, message
"出现错误")})
public User creteUser(
@RequestParam(value
"username", defaultValue
"枣面包")@ApiParam(name
"username", value
"姓名", defaultValue = "枣面包") String username,@RequestParam(value
"age", defaultValue
"18")@ApiParam(name
"age", value
"年龄", defaultValue = "18") int age) {return User.builder().username(username).age(age).build();
}
}
常用注解
@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiError :发生错误返回的信息
@ApiImplicitParam:一个请求参数
@ApiImplicitParams:多个请求参数