查询-递归树形结构数据获取 这些数据都来源于数据库,要对数据进行维护,查询。
那么就要对product 模块的CategoryController 进行修改 去到CategoryService 生成对应方法: 再去impl 编写具体的Service 的方法 功能:查出所有分类 效果图:
配置网关路由与路径重写: 添加一个后台管理系统的一级目录。 那么新增的这个一级菜单也会对应在gulimail_admin 数据库中增加新的数据
为商品系统添加第一个菜单:分类维护 同时该菜单的数据也会进入到数据表中:
当点击“分类维护”菜单,就会路由到"product/category" url 中 该系统的url 规则: 我们添加的路径"/" 会被系统替换成"-"。sys-menu 路径对应vue 项目中的文件: 那么我们自己写的菜单"分类维护"的url:product-category 就应该在vue 项目中的views 文件下,modules 文件夹下创建一个product 文件,然后再创建一个category.vue 文件。 然后要对三级分类中的商品进行增删改查,这里要显示的效果要用到Element-UI。 效果是这样的,但是里面的数据需要从后台发送请求获取。所以就要看看其他前端模块是如何发送请求给后端的。 这就是一个请求数据的模板: 但是又有一个问题,就是这只是一个发送给product 的url,以后还会给很多url 发送请求,也不能经常为每一个微服务进行url 设置,要做一个统一设置,所以统一把url 发送给网关。 要让网关发现该微服务的地址,就要注册进注册中心。 将renren-fast 后台项目加入到注册中心,就要引入Nacos 的依赖,而这个依赖在common 中有,所以引入common 包
然后在application.yml 中进行参数配置 然后设置注释使该项目能够被注册中心发现 然后在网关项目中设置路由规则: 将符合predicates(断言)规则的url(即url 中带有api)的都把它转为/renren-fast 的uri
所以前端发来的请求就得带有/api. 但是转换后的url 会有问题: 原本发送:http://localhost:88/api/captcha.jpg 通过网关会变成: http://renren-fast:8080/api/captcha.jpg。但是原本前端发送后端请求验证码的url 是:http://localhost:8080/renren-fast/captcha.jpg。 这就要用到网关功能的重写路径: 这就是把发送请求url 的/api/ 换成/renren-fast/,其他都不变。
这就解决了验证码无法出现的问题,但又出现了一个跨域请求的问题:
网关统一配置跨域请求: 跨域请求之所以遇到阻塞就是因为同源策略:即localhost:88/xxxx,只能访问localhost:88/xxxx ,不能访问其他的。(协议,域名,端口要相同)
只要是满足上图文档中所说的非简单请求,都需要先发送预检请求。
既然跨域请求的问题就是:请求的协议,域名,端口号不同,所以不能进行请求,那么让它变成同一个协议,域名,端口号就行了 第二种方法就是:因为就是OPTIONS(预检请求)第一次请求完服务器后,服务器告诉OPTIONS 不能跨域访问,后面的请求才不能进行。那我让服务器告诉OPTIONS 能跨域请求不就行了。 我们只需要在网关中配置一个filter,让url 在返回给前端之前经过该filter,然后让filter 附加上可以访问跨域访问的信息即可。 这个filter 需要我们自己来写 然后把renren-fast 内部的跨域请求注释掉
在renren-fast 的application.yml 中配置了拦截所有/api/请求,所以所有关于/api/的请求都会来到renren-fast,但是renren-fast 并不能处理product 服务,所以要把关于product 的服务转给微服务gulimall-product,所以就要给gulimall-product 定义一个路由 配置一个路由给product 的url 关于filters 中的写法: 比如请求url:http://localhost:88/api/product/category/list/tree ,在注冊中心中通过网关找到了gulimall-product以及gulimall-product的端口号,然后经过filters 后, http://localhost:10001:product /category/list/tree
把精确的路由写在前面,如果不精确的路由写在前面,会先执行不精确的路由,这样只会达不到效果。
然后为product 进行路径配置,那么这些配置都写到nacos 配置中心中, 把唯一id 写到bootstrap 文件中
然后把属于product 的配置写到nacos 配置中心中(暂时还没有)
把product 注册进nacos 注册中心 利用注解开启注册服务中心功能
然后开启product 服务,把服务注册进注册中心
然后开始编写前端代码进行数据绑定