公司接了一个新项目需要一份接口文档,所以集合了knife4j在项目中。添加项目依赖,因为公司的依赖管理是grable所以我添加的是glable格式的依赖如下:
并且添加配置类
@Configuration @EnableSwagger2 @EnableKnife4j @ConfigurationProperties(prefix = "swagger") public class SwaggerManualConfiguration { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .useDefaultResponseMessages(false) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("自己定义API文档") .description("自己定义") .termsOfServiceUrl("自己定义url") .version("1.0") .build(); } }
因为项目需要shiro做拦截所以如果只定义上面的话,shrio会将静态资源拦截在外面,所以要放开资源!
我们先 定义一个配置类去实现WebMvcConfigurer然后重写addResourceHandlers方法,WebMvcConfigurer是spring自身的一个拦截配置可以放开项目的静态资源
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/favicon.ico").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); }
配置好了这些之后我们去shrio的配置类放开登录就可以访问knife4j文档啦!
defaultShiroFilterChainDefinition.addPathDefinition("/doc.html", "anon"); defaultShiroFilterChainDefinition.addPathDefinition("/webjars/**/**", "anon"); defaultShiroFilterChainDefinition.addPathDefinition("/swagger/**", "anon"); defaultShiroFilterChainDefinition.addPathDefinition( "/v2/**","anon"); defaultShiroFilterChainDefinition.addPathDefinition( "/static/**", "anon"); defaultShiroFilterChainDefinition.addPathDefinition("/swagger-resources/**", "anon");
然后重启项目访问自己的ip+端口+doc.html,下面是我的类似这种
最后展现的效果!
本人是一枚小萌新,如果有不对的地方希望各位大佬指正批评!