前端页面优化&整合swagger

刷新丢失其它标签,前端页面优化

  • 在layout/components/TagsView文件中的index.vue目录中,在methods方法中添加如下内容方法:

    tagsViewCache() {
          window.addEventListener("beforeunload", () => {
            let tabViews = this.visitedViews.map(item => {
              return {
                fullPath: item.fullPath,
                hash: item.hash,
                meta: { ...item.meta },
                name: item.name,
                params: { ...item.params },
                path: item.path,
                query: { ...item.query },
                title: item.title
              };
            });
            sessionStorage.setItem("tabViews", JSON.stringify(tabViews));
          });
    
  • 在mounted()方法中进行调用tagsViewCache()方法,内容如下

    this.tagsViewCache();
    
  • 注销时删除所有tagview,所以需要在layout/components文件中的Navbar.vue中的methods方法中的async logout()中添加如下内容:

    // 注销时删除所有tagview
    await this.$store.dispatch('tagsView/delAllViews')
    sessionStorage.removeItem('tabViews')
    
    修改路径为:this.$router.push("/login") 
    

整合Swagger

  1. 在pom.xml文件中添加依赖

    <!--Swagger文档工具-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>
    
  2. 配置一个swagger配置类MySwaggerConfig.java,内容如下

    package com.zz.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.oas.annotations.EnableOpenApi;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    
    /**
     * ClassName:MySwaggerConfig
     * Package:com.zz.config
     * Description: 描述信息
     *
     * @date:2023/5/18 9:27
     * @author:ZZ
     */
    @Configuration
    @EnableOpenApi
    @EnableWebMvc
    public class MySwaggerConfig {
        @Bean
        public Docket api() {
            return new Docket(DocumentationType.OAS_30)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.zz"))//这里是包名
                    .paths(PathSelectors.any())
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("XXXX管理系统接口文档")
                    .description("全网最简单的SpringBoot+Vue前后端分离项目实战")
                    .version("1.0")
                    .contact(new Contact("qqcn", "http://www.qqcn.cn", "qqcn@aliyun.com"))
                    .build();
        }
    }
    
  3. 控制器根据需要添加swagger注解

  4. 测试swagger地址:http://localhost:9999/swagger-ui/index.html

  5. 在每个方法上增加一个@ApiOperation(“xxx”),可以对该方法在swagger中进行说明。

  6. 完善swagger配置文件,使得可以携带token值。

    package com.zz.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.oas.annotations.EnableOpenApi;
    import springfox.documentation.service.*;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spi.service.contexts.SecurityContext;
    import springfox.documentation.spring.web.plugins.Docket;
    
    import java.util.Collections;
    import java.util.List;
    
    /**
     * ClassName:MySwaggerConfig
     * Package:com.zz.config
     * Description: 描述信息
     *
     * @date:2023/5/18 9:27
     * @author:ZZ
     */
    @Configuration
    @EnableOpenApi
    @EnableWebMvc
    public class MySwaggerConfig {
        @Bean
        public Docket api() {
            return new Docket(DocumentationType.OAS_30)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.zz"))//这里是包名
                    .paths(PathSelectors.any())
                    .build()
                    .securitySchemes(Collections.singletonList(securityScheme()))
                    .securityContexts(Collections.singletonList(securityContext()));
        }
    
        private SecurityScheme securityScheme() {
            //return new ApiKey("Authorization", "Authorization", "header");
            return new ApiKey("X-Token", "X-Token", "header");
        }
    
        private SecurityContext securityContext() {
            return SecurityContext.builder()
                    .securityReferences(defaultAuth())
                    .forPaths(PathSelectors.regex("^(?!auth).*$"))
                    .build();
        }
    
        private List<SecurityReference> defaultAuth() {
            AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
            AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
            authorizationScopes[0] = authorizationScope;
            return Collections.singletonList(
                    new SecurityReference("X-Token", authorizationScopes));
        }
    
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("XXXX管理系统接口文档")
                    .description("全网最简单的SpringBoot+Vue前后端分离项目实战")
                    .version("1.0")
                    .contact(new Contact("qqcn", "http://www.qqcn.cn", "qqcn@aliyun.com"))
                    .build();
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值