soul 网关入门篇(三):配置divide插件

前言

soul 的官网有这么一句话: 插件化设计思想,插件热插拔,易扩展。
它是体现的呢?又是怎么去配置的呢?我们一步一步的来操作,我们先从最简单的http的插件开始。

后台配置

soul网关使用 divide 插件来处理http请求。

基本了解:

一个插件有多个选择器,一个选择器对应多种规则。选择器相当于是对流量的第一次筛选,规则就是最终的筛选。详细配置参考文档中的详细配置

开启divide

增加选择器


增加选择器

增加规则


增加规则

然后你会发现诶,这个咋不起作用呢?还是无法访问啊。这又是咋回事呢?是因为你的服务端并没有在 soul 网关注册,访问的连接也不是走的网关的连接,它当然不知道你怎么走的。那要怎么注册和访问呢?

引入插件

新起一个 spring boot 的项目引入网关对 http 的代理插件


       org.dromara
       soul-spring-boot-starter-plugin-divide
        ${last.version}
   

   
       org.dromara
       soul-spring-boot-starter-plugin-httpclient
        ${last.version}
   

   
            org.dromara
            soul-client-springmvc
            ${last.version}
        

具体配置如下


image.png

修改 application.properties 修改成 application.yml 并新增配置

soul:
  http:
    adminUrl: http://localhost:9095  # adminUrl: 为你启动的soul-admin 项目的ip + 端口,注意要加http://
    port: 8080   # port: 你本项目的启动端口
    contextPath: /soul  # contextPath: 为你的这个mvc项目在soul网关的路由前缀
    appName: soul-test  # appName:你的应用名称,不配置的话,会默认取 `spring.application.name` 的值
    full: false    # full: 设置true 代表代理你的整个服务,false表示代理你其中某几个controller

上述的 contextPath 为下面代码中 @RequestMapping 中设置的那个前缀。

我们看着例子,进行照猫画虎。新建 HttpController 的类

@RestController
@RequestMapping("/soul")
@SoulSpringMvcClient(path = "/soul/**")
public class HttpTestController {
    @GetMapping("/sayHello")
    public String sayHello() {
        return "hello world";
    }

}

修改选择器配置


修改选择器配置

利用 postman 访问连接:http://127.0.0.1:9195/test/soul/sayHello 出现了

{
    "code": -102,
    "message": "Rule not found!",
    "data": null
}

再次修改 Rule ,


修改rule

最后终于成功代理了


成功代理.png

总结

虽然是照猫画虎的按照官方的例子写个最简单的 demo,能让程序跑起来。但也是花了不少的功夫。

  1. 先要了解什么是选择器和规则,他们之前的关系又是什么。
  2. 如果基于 springboot 的项目基于 http 的方法我需要引入哪些包,我怎么去使用它。
  3. 想要了解一个框架的源码,先从他的使用开始。

你可能感兴趣的:(soul 网关入门篇(三):配置divide插件)