# openapi-swagger **Repository Path**: fhjx/openapi-swagger ## Basic Information - **Project Name**: openapi-swagger - **Description**: openapi-swagger学习: 1. 使用openapi-generator-maven-plugin,生成代码 2. 使用swagger-codegen-cli.jar生成代码 3. 使用swagger-ui和yaml配置生成接口文档 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-24 - **Last Updated**: 2024-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 接口文档 ## Swagger ### 1. 概念 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务 Swagger 是一个简单但功能强大的 API 表达工具。使用 Swagger 生成 API,我们可以得到交互式文档,自动生成代码的 SDK (软件开发工具包)以及 API 的发现特性等。 ### 2. 特点 1. Api 框架 2. restful Api 文档在线自动生成工具 3. 可以直接运行,在线测试 api 接口 4. 支持多种语言:java、php... ### 3. 常用注解 1. APiModel:实体类 2. ApiModelProperty:实体属性 3. Api:接口类 4. ApiOperation:接口方法的说明 5. @ApiImplicitParams、@ApiImplicitParam:方法参数的说明 6. @ApiResponses @ApiResponse:方法返回值的说明 7. dataType 属性:参数类型,可传基本类型、类、泛型类等 8. ParamType 属性: 表示参数放在哪个位置 - header-->请求参数的获取:@RequestHeader(代码中接收注解) - query-->请求参数的获取:@RequestParam(代码中接收注解) - path(用于 restful 接口)-->请求参数的获取:@PathVariable(代码中接收注解) - body-->请求参数的获取:@RequestBody(代码中接收注解) - form(不常用) ### 4. swagger-ui demo **SpringBoot 项目使用 Swagger-UI 步骤:​** - 导入依赖; - 开启 Swagger 注解:@EnableSwagger2; - 编写配置类。 ```xml io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui 2.9.2 com.github.xiaoymin swagger-bootstrap-ui 1.9.2 ``` ```java @Configuration//配置类 @EnableSwagger2 //swagger注解 public class SwaggerConfig { // 创建 swagger 的 Docket 的 bean 实例,使用注解@Bean;如需配置多个分组,则创建多个docket实例 @Bean public Docket docket(Environment environment) { // 设置显示的swagger环境信息 Profiles profiles = Profiles.of("dev", "test"); // 判断是否处在自己设定的环境当中 boolean flag = environment.acceptsProfiles(profiles); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("党博") // 配置api文档的分组 .enable(flag) // 配置是否开启swagger .select() .apis(RequestHandlerSelectors.basePackage("com.dangbo.controller")) //配置扫描路径 .paths(PathSelectors.none()) // 配置过滤哪些 .build(); } // api基本信息 private ApiInfo apiInfo() { return new ApiInfo("my first swagger", "党博的第一个swagger", "v1.0", "http://mail.qq.com", new Contact("dangbo", "http://mail.qq.com", "1456131152@qq.com"), //作者信息 "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList()); } } ``` ## Knife4j 1. i18n 国际化 2. 接口添加作者 3. 自定义文档 4. 访问权限控制 5. 导出离线文档 ## OpenAPI