knife4j集成Swagger

编程入门 行业动态 更新时间:2024-10-15 00:26:58

<a href=https://www.elefans.com/category/jswz/34/1732764.html style=knife4j集成Swagger"/>

knife4j集成Swagger

knife4j集成

配置knife4j

第一步: 导入knife4j对应的maven坐标,knife4j是为MVC框架集成Swagger生成API文档的增强解决方案

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version>
</dependency>

第二步: 在WebMvcConfig配置类中设置knife4j的相关配置, 使用@EnableSwagger2WebMvc注解开启生成接口文档的功能

@Configuration
@Slf4j
@EnableSwagger2 // 集成Swagger的注解
@EnableKnife4j
//@EnableSwagger2WebMvc // 该注解可以代替以上两个注解
public class WebMvcConfig extends WebMvcConfigurationSupport {// 描述接口信息的文档对象@Beanpublic Docket createRestApi() {//文档类型return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()// 扫描controller中的控制器方法生成对应的接口文档 .apis(RequestHandlerSelectors.basePackage("com.reggie.controller")).paths(PathSelectors.any()).build();}// 描述文档信息的对象	private ApiInfo apiInfo() {return new ApiInfoBuilder().title("瑞吉外卖").version("1.0").description("瑞吉外卖接口文档").build();}
}

第三步: 设置静态资源映射, 否则接口文档页面无法访问

public class WebMvcConfig extends WebMvcConfigurationSupport {@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {log.info("开始进行静态资源映射...");//.................registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}
}

第四步: 在LoginCheckFilter拦截器对访问接口文档的请求路径放行即用户没有登陆时也允许访问

// 定义不需要处理的请求
String[] urls = new String[]{"/employee/login","/employee/logout","/backend/**","/front/**","/common/**",// 对用户登陆操作放行"/user/login","/user/sendMsg",// 对文档的访问操作放行"/doc.html","/webjars/**","/swagger-resources","/v2/api-docs"
};

第五步: 启动服务访问http://localhost:8080/doc.html即可看到生成的接口文档

第六步: 导出离线文档,OpenAPI表示导出JSON格式的文档,可以在Yapi平台中使用

常用注解

使用knife4j提供的这些注解可以将我们生成的接口文档更规范

注解说明
@Api一般用在请求的Controller类上,表示对类的说明
@ApiOperation用在Controller类中请求的方法上,说明方法的用途
@ApilmplicitParams用在Controller类中请求的方法上,对控制器方法中的参数进行说明
@ApilmplicitParam用在@ApilmplicitParams注解中,指定一个请求参数的各个方面
@ApiModel一般用在是个实体类上,表示一个返回响应数据的信息
@ApiModelProperty用在实体类的属性上,描述响应类的属性

在实体类上使用@ApiModel@ApiModelProperty

@Data
@ApiModel("用户")
public class User implements Serializable {private static final long serialVersionUID = 1L;@ApiModelProperty("主键")private Long id;//姓名@ApiModelProperty("姓名")private String name;//手机号@ApiModelProperty("手机号")private String phone;//性别 0 女 1 男@ApiModelProperty("性别 0 女 1 男")private String sex;//身份证号@ApiModelProperty("身份证号")private String idNumber;//头像@ApiModelProperty("头像")private String avatar;//状态 0:禁用,1:正常@ApiModelProperty("状态 0:禁用,1:正常")private Integer status;
}

在控制器方法上使用@Api@ApiOperation以及@ApilmplicitParams注解

@RestController
@Slf4j
@RequestMapping("/user")
@Api(tags = "用户相关接口")
public class UserController {@PostMapping("/sendMsg")@ApiOperation("发送验证邮件接口")public Result<String> sendMsg(@RequestBody User user) throws MessagingException {}@PostMapping("/login")@ApiOperation("用户登录接口")@ApiImplicitParam(name = "map",value = "map集合接收数据",required = true)public Result<User> login(@RequestBody Map map, HttpSession session) {}@PostMapping("/loginout")@ApiOperation("用户登出接口")public Result<String> logout(HttpServletRequest request) {}
}

重新启动服务器,访问http://localhost:8080/doc.html查看新生成的接口文档,可读性比之前提高

更多推荐

knife4j集成Swagger

本文发布于:2023-11-14 22:12:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1588658.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:knife4j   Swagger

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!