商品服务-三级分类-配置网关路由与路径重写

1.新建商品管理

启动renren-fast与前端项目,在菜单管理中选择新建商品管理(目录)
在这里插入图片描述
刷新页面
在这里插入图片描述
再新建菜单分类维护,路由为product/category
在这里插入图片描述
刷新页面后
在这里插入图片描述

2.规律

菜单url中的/在地址栏中被替换成-
在这里插入图片描述
对应的前端页面在/views/modules/sys/menu.vue
在这里插入图片描述
类似的我们在/modules下新建/product/category.vue
在这里插入图片描述

3.category.vue中展示三级分类数据

在ElementUI官网添加链接描述中找到Tree树形控件
在这里插入图片描述
将示例代码复制
在这里插入图片描述

4.展示真实数据

4.1获取菜单getMenus

<template>
  <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
</template>

<script>
export default {
name: '',
//import引入的组件需要注入到对象中才能使用
components: {},
props: {},
 data() {
      return {
        data: [],
        defaultProps: {
          children: 'children',
          label: 'label'
        }
      };
    },
    methods: {
      handleNodeClick(data) {
        console.log(data);
      },
      //获取菜单
      getMenus() {
        this.$http({
          url: this.$http.adornUrl('/product/category/list/tree'),
          method: 'get',
        }).then(data => {
         console.log("获取菜单数据成功",data);
        })
      },
    },
//计算属性 类似于data概念
computed:{
},
//监控data中的数据变化
watch:{
},

//生命周期 - 创建完成(可以访问当前this实例)
created() {
    this.getMenus();
},
//生命周期 - 挂载完成(可以访问DOM元素)
mounted() {},
beforeCreate() {}, //生命周期 - 创建之前
beforeMount() {}, //生命周期 - 挂载之前
beforeUpdate() {}, //生命周期 - 更新之前
updated() {}, //生命周期 - 更新之后
beforeDestroy() {}, //生命周期 - 销毁之前
destroyed() {}, //生命周期 - 销毁完成
activated() {} //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>

<style scoped>

</style>

4.2.bug分析

端口不对,不应该是后台管理项目端口8080,而是商品项目端口10000
在这里插入图片描述
让前端发来的请求交给网关处理,修改前端项目端口信息**/static/config/indes.js**

 // api接口请求地址
  window.SITE_CONFIG['baseUrl'] = 'http://localhost:88';

在这里插入图片描述
发现请问88端口但验证码没了,验证码应该从后台项目中获取,网关将请求转给后台项目即可(后台项目得注册到nacos)
renren-fast的pom中依赖gulimall-comment

<dependency>
	<groupId>com.atguigu.gulimall</groupId>
	<artifactId>gulimall-common</artifactId>
	<version>0.0.1-SNAPSHOT</version>
</dependency>

配置服务名与nacos注册中心地址

  application:
    name: renren-fast
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

启动类加注解@EnableDiscoveryClient
在这里插入图片描述
人为规定前端项目请求携带/api前缀,再次修改前端项目端口信息

// api接口请求地址
window.SITE_CONFIG['baseUrl'] = 'http://localhost:88/api';

配置gulimall-gateway的application.yml

 - id: admin_route
   #lb 负载均衡
   uri: lb://renren-fast
   predicates:
      - Path=/api/**

路由配置详情参考spring-cloud官网添加链接描述
在这里插入图片描述
重新启动项目后发现验证码还是404
在这里插入图片描述
原因分析:
前端发来的http://localhost:88/api/captcha.jpg ,经过网关处理后变为http://localhost:8080/api/captcha.jpg(前端携带/api符合要求转到后台renren-fast,但后面的地址直接拼接)
路径重写

 - id: admin_route
   #lb 负载均衡
   uri: lb://renren-fast
   predicates:
     - Path=/api/**
   filters:
     - RewritePath=/api/(?<segment>.*),/renren-fast/$\{segment}

路径重写详情参考spring-cloud官网添加链接描述
在这里插入图片描述
重启项目再次访问,发现验证码获取正常(前端发来的http://localhost:88/api/captcha.jpg经过网关处理http://localhost:8080/renren-fast/captcha.jpg)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值