Swagger

创建日期:2024-06-21
更新日期:2024-12-18

参考文档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 allowPaths() {

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:多个请求参数