#### API 網關服務-Zuul
- 場景舉例
> 假設你后臺部署了幾百個服務,現在前端從瀏覽器直接發出請求,打個比方:請求一下庫存服務,難道還讓前端記著這服務的名字叫做xxxx-service?部署在好幾臺臺機器上,不同的端口,就算前端記住這一個,你后臺可有幾百個服務的名稱和地址呢?所以網關Zuul應運而生
- 所有請求統一從網關進入,如下圖所示

- 引入依賴
```
<!-- 服務網關 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
```
- application.yml serviceId-服務名稱唯一
```
spring:
application:
name: sc-zuul
eureka:
client:
serviceUrl:
defaultZone: http://192.168.0.114:8001/eureka/,http://192.168.0.114:8002/eureka/,http://192.168.0.114:8003/eureka/
zuul:
routes:
api-a:
path: /api-data/**
serviceId: sc-eureka-client
api-b:
path: /api-view/**
serviceId: sc-feign
server:
port: 9999
```
- 啟動類
```
package com.dg.sc.zuul;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
/**
* 〈服務網關〉
*
* @author xieth
* @create 2019/6/11
* @since 1.0.0
*/
@SpringCloudApplication
@EnableZuulProxy //服務網關
public class ZuulApplication {
public static void main(String[] args) {
SpringApplication.run( ZuulApplication.class,args );
}
}
```
- 注冊中心界面可以看到Zuul服務已經注冊成功

- 運行,瀏覽器輸入 [http://localhost:9999/api-view/products](http://localhost:9999/api-view/products)

- http://localhost:9999/api-view/products 等價于 http://localhost:4444/products