Spring Cloud Zuul入門
阿新 • • 發佈:2018-12-18
Zuul的作用
作用其實就只有兩個:
1. 請求路由。
2. 請求過濾。
請求路由
這裡介紹一下面向服務的請求路由。
新建立專案geteway-api
引入pom
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.17.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.SR5</spring-cloud.version >
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
< artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
新增啟動類
package com.bobo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@EnableZuulProxy
@SpringBootApplication
public class GetewayApiApplication {
public static void main(String[] args) {
SpringApplication.run(GetewayApiApplication.class, args);
}
}
配置檔案
spring.application.name=api-geteway
server.port=5555
zuul.routes.api-a.path=/api-a/**
zuul.routes..api-a.serviceId=eureka-client
zuul.routes.api-b.path=/api-b/**
zuul.routes..api-b.serviceId=feign-consumer
eureka.client.serviceUrl.defaultZone=http://localhost:11111/eureka/
這裡是做了一層對映,其中訪問是包含api-a的會去eureka-client服務下去找,api-b的回去feign-comsumer中去找。
啟動eureka、eureka-server、feign-cunsumer、geteway-api四個專案。
eureka服務結果如下所示:
在feign-consumer中有這樣一個服務:
@RequestMapping(value = "/hello4",method = RequestMethod.GET)
public String Hello1 (@RequestParam String name){
return refactorHelloService.Hello(name);
}
然後去訪問
在eureka-comsumer中服務是這樣的:
package com.bobo.eurekaserver.controller;
import com.bobo.bean.User;
import com.bobo.service.api.HelloService;
import org.springframework.web.bind.annotation.RestController;
/**
* @author [email protected]
* @create 2018-10-28 10:13
**/
@RestController
public class RefactorHelloController implements HelloService{
@Override
public String Hello(String name) {
return "Hello" +name;
}
@Override
public User Hello(String name, String age) {
return new User(name,Integer.parseInt(age));
}
@Override
public String Hello(User user) {
return "Hello" + user.getName() +", "+user.getAge();
}
}
這裡使用了feign的繼承特性,所以哈哈,如果不會,去看看feign的繼承是如何實現的。所以只能是這樣訪問:
如果使用http://localhost:5555/api-a/hello4?name=wuxiaobo去訪問,結果只能是這樣的: