- Swagger简单介绍
- knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,接下来我们就在spring boot项目中集成knife4j。
- spring boot项目中使用knife4j框架
- 首先我们在maven项目的pom.xml文件中导入knife4j的坐标
- 导入knife4j的相关配置类
- 因为是spring mvc的集成,所以我们将创建一个WebMvcConfig类,然后在里面加入相关的bean声明就可以了
- 在配置类上加上@EnableSwagger2、@EnableKnife4j注解,以便开启Swagger和Knife4j的功能
- 在配置类中声明一个Docket类型的bean, 通过该bean来指定生成文档的相关信息
- 由于Swagger生成的在线文档中,涉及到很多静态资源,这些静态资源需要添加静态资源映射,否则接口文档页面无法访问。因此需要在 WebMvcConfig类中的addResourceHandlers方法中增加如下配置
-
@Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { log.info("开始进行静态资源映射..."); // 添加Swagger生成的在线文档的相关静态资源映射 registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); }
-
-
package com.app.studypro.config; import com.app.studypro.common.JacksonObjectMapper; import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.List; /** * Spring mvc的配置设定 * * @author Administrator */ @Slf4j @Configuration @EnableSwagger2 @EnableKnife4j public class WebMvcConfig extends WebMvcConfigurationSupport { @Override protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) { log.info("扩展消息转换器,自定义添加 {} 消息转化器到spring mvc中", JacksonObjectMapper.class); // 创建消息转换器对象 MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter(); // 设置对象转换器,底层使用Jackson将Java对象转为json messageConverter.setObjectMapper(new JacksonObjectMapper()); // 将上面的消息转换器对象追加到mvc框架的转换器集合中,将其放在转换器集合的首个位置 converters.add(0, messageConverter); } @Bean public Docket createRestApi() { // 创建api文档信息 ApiInfo apiInfo = new ApiInfoBuilder() // 设置api文档标题 .title("学习操作项目") // 设置api文档的版本 .version("1.0") // 设置api文档的描述信息 .description("学习操作项目接口文档").build(); // 文档类型 return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select() // Docket声明时,指定一个包扫描的路径,该路径指定的是Controller所在包的路径。 // 因为Swagger在生成接口文档时,就是根据这里指定的包路径,自动的扫描该包下的@Controller,@RestController,@RequestMapping等SpringMVC的注解,依据这些注解来生成对应的接口文档 .apis(RequestHandlerSelectors.basePackage("com.app.studypro.controller")).paths(PathSelectors.any()).build(); } /** * 静态资源映射 * * @param registry 资源处理器 */ @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { log.info("开始进行静态资源映射..."); // 添加Swagger生成的在线文档的相关静态资源映射 registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } }
- 因为是spring mvc的集成,所以我们将创建一个WebMvcConfig类,然后在里面加入相关的bean声明就可以了
- 若系统中存在授权才可以请求的路径filter或者拦截器,则需要将下列路径在系统中放行。这样将Swagger及Knife4j相关的静态资源直接放行之后,我们才可以免授权方式直接访问接口文档的页面。放行的url如下所示
- 查看接口文档信息
- 我们根据上面的方式集成配置之后,那么我们的项目集成Swagger及Knife4j就已经完成了,接下来我们可以启动我们的项目,然后访问接口文档,本地的访问链接为:http://127.0.0.1:8080/doc.html
- 通过接口文档我们可以看出,我们所有的Controller中提供的所有的业务增删改查的接口,全部都已经自动生成了,并且我们通过接口文档可以看到请求的url、请求方式、请求参数、请求实例、响应的参数,响应的示例。 同时我们也可以通过这份在线的接口文档,对接口进行测试
- 如果我们部分的接口需要系统授权之后才可以访问,那么我们在调用这些接口时,需要先调用获取授权的方法,然后再调用需要授权的接口,这样才可以正常的访问授权接口
- Knife4j还支持离线文档,对接口文档进行下载,支持下载的格式有:markdown、html、word、openApi
原文地址:https://blog.csdn.net/weixin_41926152/article/details/134633576
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_34986.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。