2026/5/21 11:31:06
网站建设
项目流程
网站开发的基本流程和步骤,小型企业网站建设,竞价广告,自己做网站可以盗图吗目录一、Swagger介绍1、什么是Swagger2、为什么使用 Swagger#xff1f;二、Swagger常用注解1、Api2、ApiModel3、ApiModelProperty4、ApiOperation三、SpringBoot中配置Swagge1、引入依赖2、使用方式四、验证Swagger配置一、Swagger介绍
1、什么是Swagger
定义 OpenAPI 规范…目录一、Swagger介绍1、什么是Swagger2、为什么使用 Swagger二、Swagger常用注解1、Api2、ApiModel3、ApiModelProperty4、ApiOperation三、SpringBoot中配置Swagge1、引入依赖2、使用方式四、验证Swagger配置一、Swagger介绍1、什么是Swagger定义OpenAPI 规范描述 RESTful API 的标准格式JSON/YAMLSwagger 工具集围绕 OpenAPI 规范构建的工具集合2、为什么使用 Swagger优势标准化文档 - 统一的 API 描述格式交互式测试 - 直接在浏览器测试 API前后端协作 - 基于文档先行开发代码自动生成 - 减少手写代码API 管理 - 版本控制、权限管理二、Swagger常用注解通过注解可以控制生成的接口文档使接口文档拥有更好的可读性常用注解如下1、ApiApi用在类上例如Controller表示对类的说明Api(tags员工管理)RestControllerRequestMapping(/admin/employee)Slf4jpublicclassEmployeeController{2、ApiModelApiModel用在类上例如entity、DTO、VO配合APIModelProperty使用DataBuilderNoArgsConstructorAllArgsConstructorApiModel(员工信息)publicclassEmployeeimplementsSerializable{privatestaticfinallongserialVersionUID1L;ApiModelProperty(员工id)privateLongid;ApiModelProperty(用户名)privateStringusername;privateStringname;privateStringpassword;privateStringphone;privateStringsex;privateStringidNumber;privateIntegerstatus;// JsonFormat(pattern yyyy-MM-dd HH:mm:ss)privateLocalDateTimecreateTime;// JsonFormat(pattern yyyy-MM-dd HH:mm:ss)privateLocalDateTimeupdateTime;privateLongcreateUser;privateLongupdateUser;}3、ApiModelPropertyApiModelProperty用在属性上描述属性信息DataBuilderNoArgsConstructorAllArgsConstructorApiModel(员工信息)publicclassEmployeeimplementsSerializable{privatestaticfinallongserialVersionUID1L;ApiModelProperty(员工id)privateLongid;ApiModelProperty(用户名)privateStringusername;privateStringname;privateStringpassword;privateStringphone;privateStringsex;privateStringidNumber;privateIntegerstatus;// JsonFormat(pattern yyyy-MM-dd HH:mm:ss)privateLocalDateTimecreateTime;// JsonFormat(pattern yyyy-MM-dd HH:mm:ss)privateLocalDateTimeupdateTime;privateLongcreateUser;privateLongupdateUser;}4、ApiOperationApiOperation用在方法上例如Controller的方法说明方法的用途、作用PostMapping(/login) ApiOperation(员工登录) public ResultEmployeeLoginVOlogin(RequestBody EmployeeLoginDTO employeeLoginDTO) { log.info(员工登录{}, employeeLoginDTO); Employee employee employeeService.login(employeeLoginDTO); //登录成功后生成jwt令牌 MapString,Objectclaims new HashMap(); claims.put(JwtClaimsConstant.EMP_ID, employee.getId()); String token JwtUtil.createJWT( jwtProperties.getAdminSecretKey(), jwtProperties.getAdminTtl(), claims); EmployeeLoginVO employeeLoginVO EmployeeLoginVO.builder() .id(employee.getId()) .userName(employee.getUsername()) .name(employee.getName()) .token(token) .build(); return Result.success(employeeLoginVO); }三、SpringBoot中配置SwaggerKnife4j 是为Java MVC框架集成Swagger生成Api文档的增强解决方案。1、引入依赖dependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-spring-boot-starter/artifactIdversion3.0.2/version/dependency2、使用方式1、导入 knife4j 的maven坐标dependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-spring-boot-starter/artifactIdversion3.0.2/version/dependency2、在配置类中加入 knife4j 相关配置ConfigurationSlf4jpublicclassWebMvcConfigurationextendsWebMvcConfigurationSupport{/** * 通过knife4j生成接口文档 * return */BeanpublicDocketdocket(){ApiInfoapiInfonewApiInfoBuilder().title(项目接口文档).version(2.0).description(苍穹外卖项目接口文档介绍).build();DocketdocketnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage(com.sky.controller)).paths(PathSelectors.any()).build();returndocket;}3、设置静态资源映射否则接口文档页面无法访问protectedvoidaddResourceHandlers(ResourceHandlerRegistryregistry){registry.addResourceHandler(/doc.html).addResourceLocations(classpath:/META-INF/resources/);registry.addResourceHandler(/webjars/**).addResourceLocations(classpath:/META-INF/resources/webjars/);}接口文档访问路径为http://ip:port/doc.html四、验证Swagger配置title(“项目接口文档”)对应description(“苍穹外卖项目接口文档介绍”)对应接口口调试方法