通过 Zuul API 网关执行请求2025年1月11日 | 阅读 3 分钟 步骤 1: 运行 netflix-eureka-naming-server。 步骤 2: 在端口 8000 上运行 currency-exchange-service。 步骤 3: 在端口 8100 上运行 currency-conversion-service。 步骤 4: 运行 netflix-zuul-api-gateway-server。 步骤 5: 打开浏览器并调用 URL https://:8761。 它显示了在 Eureka 命名服务器上注册的所有服务。
步骤 6: 调用 URL https://:8000/currency-exchange/from/EUR/to/INR。 我们得到了响应,但请求没有通过 Zuul API 网关。
让我们通过 Zuul API 网关调用请求。 我们使用以下 URL:https://:8765/{application-name}/{uri}。 端口 8765 是 Zuul API 网关服务器的默认端口。 在我们的例子中,应用程序名称是 currency-exchange-service,URI是 /currency-exchange/from/EUR/to/INR。 因此,完整的 URL 将如下所示 https://:8765/currency-exchange-service/currency-exchange/from/EUR/to/INR 步骤 7: 复制上述 URL 并将其粘贴到浏览器中。 我们得到与上面相同的响应,但这次,请求通过了 Zuul API 网关。
我们还可以看到打印在 Zuul API 网关服务器上的请求内容。 请求打印请求 URI。
我们通过 Zuul API 网关发送了请求,而不是直接调用微服务。 在微服务调用之间设置 Zuul API 网关在前面的步骤中,我们使用了一个直接 URL 通过 Zuul API 网关代理执行 currency-exchange-service。 当我们使用 URL https://:8765/currency-exchange-service/currency-exchange/from/EUR/to/INR 时,它使用端口 8765,这是 API 网关的代理。 在本节中,我们将调用调用 currency-exchange-service 的 currency-calculation-service (currency-conversion-service)。 到目前为止,我们一直在直接调用该服务。 现在,我们将通过 Zuul API 网关调用它,而不是直接调用 currency-exchange-service。 步骤 1: 选择项目 currency-conversion-service。 步骤 2: 打开 CurrencyExchangeServiceProxy.java 文件。 步骤 3: 使用属性 name="netflix-zuul-api-gateway-server" 通过注解 @FeignClient 启用 Feign。 记住: 移除或注释掉 CurrencyExchangeServiceProxy.java 文件中的所有其他注解 @FeignClient。 步骤 4: 为 Zuul API 网关服务器定义 mapping。 记住: 移除或注释掉 currency-exchange-service 的 mapping。 步骤 5: 按照我们编写的顺序运行 netflix-eureka-naming-server、currency-exchange-service、currency-conversion-service 和 netflix-zuul-api-gateway-server。 记住: 确保所有 四个 服务都正常运行。 步骤 6: 打开浏览器并调用 URL https://:8100/currency-converter-feign/from/USD/to/INR/quantity/1000。 它返回以下响应 ![]() 让我们看一下 NetflixZullApiGatewayServerApplication 的日志。 步骤 7: 单击控制台图标旁边的箭头并选择 NetflixZullApiGatewayServerApplication。 ![]() 它显示了一些日志,如下图所示。 ![]() 步骤 8: 再次刷新 URL。 它在控制台上显示一个日志。 ![]() 每当我们通过 Feign 调用 CurrencyClaculationService (currency-converter-service) 时,它都会通过 API 网关服务器进行路由。 网关执行名为 ZuulLoggingFilter 的过滤器,该过滤器调用 currency-exchange-service。 现在,让我们拦截 currency converter-service 和 currency-exchange-service 之间的调用。 这意味着当我们调用 URL 时,API 网关执行 两次。
让我们在我们的项目中实现拦截。 通过 API 网关发送请求 https://:8765。 URI 将是 /{application-name}/{uri}。 完整的 URL 将如下所示 https://:8765/currency-conversion-service/currency-converter-feign/from/USD/to/INR/quantity/1000 调用上述 URL。 它返回的响应与 URL https://:8100/currency-converter-feign/from/USD/to/INR/quantity/1000 返回的响应相同。 ![]() 我们可以在日志中看到,日志过滤器执行 两次。 第一次它调用 currency-converter-service,第二次当 currency-converter-service 调用 currency-exchange-service 时。 ![]() 在本节中,我们通过 Zuul API 网关服务器执行了这两个服务。 下一主题分布式跟踪介绍 |
我们请求您订阅我们的新闻通讯以获取最新更新。