Grain Store Learning Diary(24)-3レベルの分類-構成ゲートウェイのルーティングとパスの書き換え

gulimall-productをnacosに構成します

まず、共通の依存関係がpom依存関係に追加されているため、
application.ymlを変更するだけで済みます。

spring:
  application:
    name: gulimall-product
  cloud:
    nacos:
      discovery:
        server-addr: 123.57.234.28:8848

クラス追加サービス登録アノテーション@EnableDiscoveryClientを開始します


@EnableDiscoveryClient
@MapperScan("com.xfwang.gulimall.product.dao")
@SpringBootApplication
public class GulimallProductApplication {
    
    

再起動するだけ

renren-fastをnacosに構成する

これは上記と一致していますが、より多くの命令がコード
ymlを直接貼り付けます

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

pom.xml

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

クラスを開始


@EnableDiscoveryClient
@SpringBootApplication
public class RenrenApplication {
    
    

背景管理システムメニューを追加する

バックグラウンドメニューを構成する

renren-fast-vueプロジェクトを開始します。依存するrenren-fastプロジェクトはすでにバックグラウンドで実行されています

ログイン、admin / admin

システム管理に製品管理のカタログを追加し
ます新しく追加されたカテゴリメンテナンスのメニュー構成URLは製品/カテゴリです。

コンポーネントの作成

ページコンポーネント
src / views / modules /
new productfolderをvueプロジェクトに書き込み
ますcategory.vueファイルを作成します

element-uiでツリーメニューコンポーネントを見つけて、直接コピーします。あなたは予備的な結果を見ることができます

category.vue

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

<script>
//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
//例如:import 《组件名称》 from '《组件路径》';

export default {
    
    
  //import引入的组件需要注入到对象中才能使用
  components: {
    
    },
  data() {
    
    
    return {
    
    
      data: [
        {
    
    
          label: "一级 1",
          children: [
            {
    
    
              label: "二级 1-1",
              children: [
                {
    
    
                  label: "三级 1-1-1",
                },
              ],
            },
          ],
        },
        {
    
    
          label: "一级 2",
          children: [
            {
    
    
              label: "二级 2-1",
              children: [
                {
    
    
                  label: "三级 2-1-1",
                },
              ],
            },
            {
    
    
              label: "二级 2-2",
              children: [
                {
    
    
                  label: "三级 2-2-1",
                },
              ],
            },
          ],
        },
        {
    
    
          label: "一级 3",
          children: [
            {
    
    
              label: "二级 3-1",
              children: [
                {
    
    
                  label: "三级 3-1-1",
                },
              ],
            },
            {
    
    
              label: "二级 3-2",
              children: [
                {
    
    
                  label: "三级 3-2-1",
                },
              ],
            },
          ],
        },
      ],
      defaultProps: {
    
    
        children: "children",
        label: "label",
      },
    };
  },
  methods: {
    
    
    handleNodeClick(data) {
    
    
      console.log(data);
    },
  },
  //监听属性 类似于data概念
  computed: {
    
    },
  //监控data中的数据变化
  watch: {
    
    },
  //生命周期 - 创建完成(可以访问当前this实例)
  created() {
    
    },
  //生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {
    
    },
  beforeCreate() {
    
    }, //生命周期 - 创建之前
  beforeMount() {
    
    }, //生命周期 - 挂载之前
  beforeUpdate() {
    
    }, //生命周期 - 更新之前
  updated() {
    
    }, //生命周期 - 更新之后
  beforeDestroy() {
    
    }, //生命周期 - 销毁之前
  destroyed() {
    
    }, //生命周期 - 销毁完成
  activated() {
    
    }, //如果页面有keep-alive缓存功能,这个函数会触发
};
</script>
<style scoped>
</style>

アクセスパスを書き換え、ルーティングアクセスを構成します

バックグラウンドからデータを取り戻したい場合は、それを死ぬまで書き込んではいけません

次に、パス
category.vueを書き換えてdata []を削除
し、バックグラウンドメソッド
getDataList()への呼び出しを追加する必要があります。

export default {
    
    
  //import引入的组件需要注入到对象中才能使用
  components: {
    
    },
  data() {
    
    
    return {
    
    
      data: [ ],
      defaultProps: {
    
    
        children: "children",
        label: "label",
      },
    };
  },
  methods: {
    
    
    handleNodeClick(data) {
    
    
      console.log(data);
    },
    getDataList () {
    
    
        this.dataListLoading = true
        this.$http({
    
    
          url: this.$http.adornUrl('/product/category/list/tree'),
          method: 'get',
        }).then(({
    
    data}) => {
    
    
            console.log(data)
        })
      
  },

ルーティングゲートウェイ
static / config /index.jsを構成します

ゲートウェイへのアクセスパスを変更すると、ゲートウェイはAPIインターフェイスを一律に呼び出し
てアドレスを要求します

/**
 * 开发环境
 */
;(function () {
    
    
  window.SITE_CONFIG = {
    
    };

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

  // cdn地址 = 域名 + 版本号
  window.SITE_CONFIG['domain']  = './'; // 域名
  window.SITE_CONFIG['version'] = '';   // 版本号(年月日时分)
  window.SITE_CONFIG['cdnUrl']  = window.SITE_CONFIG.domain + window.SITE_CONFIG.version;
})();

バックグラウンドゲートウェイを変更して、ルーティングルールを追加します

apllication.ymlが増加しました

        - id: admin_route
          uri: lb://renren-fast # 路由给renren-fast
          predicates:  # 什么情况下路由给它
            - Path=/api/** # 默认前端项目都带上api前缀,就是我们前面题的localhost:88/api
          filters:
            - RewritePath=/api/(?<segment>.*),/renren-fast/$\{
    
    segment}  # 把/api/* 改变成 /renren-fast/*
 # fast找

vueプロジェクトを再起動すると、確認コードにアクセスするためのインターフェイスが次のようになっていることがわかります。

http://localhost:8070/api/captcha.jpg?uuid=0c95e313-f1c3-4a25-867f-fd28f6088f68

確認コードは正しく読み込まれますが、ログインエラーが報告されます。クロスドメインの問題がここに含まれます。これは次のセクションで解決されます。

おすすめ

転載: blog.csdn.net/menxinziwen/article/details/115189601