问题标签 [api-gateway]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
12481 浏览

java - 如何在 application.yml Spring Cloud Gateway 中指定自定义过滤器

我有一个自定义网关过滤器 MYGatewayFilter.java 文件,现在我想将此网关过滤器与我在 application.yml 中编写的路由一起使用

我如何为上述路线定义过滤器

自定义过滤器 MyGatewayFilter.java

0 投票
2 回答
3304 浏览

json - Spring Netflix Zuul:API-Gateway - 转换 JSON 请求

我目前正在使用 Spring Netflix Zuul 库为新的微服务系统构建 API 网关。

到目前为止,我的网关包含拦截请求PREPOST执行所需逻辑等的过滤器。

我看到的一件事是,对特定微服务的 REST 调用需要调用包含非常复杂的 JSON 有效负载数据的 API 端点(GET 或 POST)。

对于向包含此 JSON 的微服务发送请求的最终用户而言,用户将不友好。

我有一个想法,即 API 网关充当中介,用户可以在其中向 API 网关提交更“简化/用户友好”的 JSON,这将使用正确的“复杂”JSON 结构转换 JSON 有效负载目标微服务可以理解以便有效地处理请求。

我对 Netflix Zuul 的理解是,这可以通过创建一个RouteFilter然后在此处包含此逻辑来完成。

谁能解释一下这种转变是否(或如何)可以使用 Netflix Zuul 完成?

任何建议表示赞赏。

谢谢。

0 投票
0 回答
1307 浏览

.net - 微服务 - 结合 API 网关和消息代理

我正在将一个巨大的单体企业应用程序分解为几个微服务,并确定了将围绕这些服务建模的业务能力。该应用程序具有相互交互的不同模块(HRMS、事务管理等)。我没有满足不同设备的要求。

在某些请求-(立即)响应用例中,微服务之间通过 API 网关进行的通信似乎很合适。但是,对于许多功能,不需要(立即)响应,将事件(例如,'EmployeeCreated')发布到消息代理(RabbitMQ)似乎更合适。

我的目标是尽可能使用异步 pub-sub,并保持 API Gateway 简单和愚蠢,以避免出现另一个单一的单点故障。

我有以下问题:

i) 通过 RESTful API-Gateway 通过微服务间通信实现某些功能,通过异步发布-订阅实现其他功能,这是一种好方法吗?有什么需要注意的挑战吗?

ii) 让中央路由网关订阅消息代理事件并调用相应的 RESTful API 是否是一个不错的选择?我担心这两个巨头(中央 msg 代理和 API 网关)可能会首先破坏 MSA 的目的。

iii)如果我要使用(i),这个答案表明 Windows 服务可以更好地与 RabbitMQ 一起使用,并且 Windows 服务中的自托管 Web API 可能是一个不错的选择。这样,windows服务就可以消费某些事件,并暴露一些API进行同步调用。这是推荐的吗?假设 .Net 范式,异步微服务是否一定需要是 Windows 服务?

对不起,范围很广。任何帮助表示赞赏。

0 投票
1 回答
583 浏览

java - 从 Zuul Server API Gateway 调用多个服务

我有三个服务 A、B、C 如果我从 Zuul Api 网关调用服务 A 而不是在 Api 网关中调用服务 A,他们调用服务 B 和服务 C 并给我两个服务的聚合响应,我想将该响应发送到服务 A。有吗使用 Zuul 的任何方法。

0 投票
1 回答
2088 浏览

amazon-web-services - 从 AWS ApiGateway 重定向到公共 ELB

我试图将来自 api 网关的调用重定向到 AWS 中的公共 elb。ELB 向世界开放,但我无法通过 API 网关使其工作。

API 网关配置

当我调用事件操作 {"message":"Internal server error"} 时,我从邮递员那里得到了这个响应

从 AWS 测试控制台,我得到这个错误:

2018 年 1 月 17 日星期三 20:29:12 UTC:由于配置错误,执行失败:主机名“public-elb.amazonaws.com”与对等方提供的证书主题不匹配 (CN=*.confidential.com) 17 20:29:12 UTC 2018:方法完成,状态:500

我假设 ELB 是可访问的,因为然后我更改为另一个随机 URL,错误代码是“无效的端点地址”。

为什么我会收到此错误?我只有一个证书,并且在 url 和 elb 中是相同的。

0 投票
0 回答
1341 浏览

ssl - Spring Cloud Gateway 转发客户端证书

我正在尝试将 spring-cloud-gateway 用于基于 spring-boot 的服务,该服务使用 ssl 和 client-auth。

问题是,通过 api-gateway 从客户端调用服务总是以“certificate_unknown”失败(没有网关也可以正常工作)。

似乎 spring-cloud-gateway 没有将客户端证书转发到后端服务。

任何想法如何实现这一目标?这是缺少的功能吗?

谢谢

0 投票
0 回答
315 浏览

authentication - 身份验证:API 网关与单独的服务

我们刚刚开始将我们的单体应用拆分为服务。我们将首先从单体中提取身份验证/授权服务。现在我们有一个选择 - API Gateway 提供身份验证与独立服务(例如 IdentityServer4)。

我们的身份验证场景非常广泛 - Web 应用程序、移动应用程序、内部工具、需要弃用的 Oauth1、一些手写 API 身份验证。

由于优点,我倾向于使用单独的服务方法:

  • 我们可以分别部署/扩展身份验证和网关
  • 我们可以更轻松地将网关换成另一个
  • 身份验证服务器是开源的,用熟悉的语言编写,我们更容易理解 - 自定义它可能更容易

但我可以看到的缺点:

  • 更多运动部件
  • 我们将需要集成可能很难的 Auth Server 和 Gateway

我想知道我缺少的这两种方法的其他优点/缺点是什么?

0 投票
1 回答
135 浏览

cors - 在 API Gateway + Lambda 微服务模板 + DynamoDB 上启用 CORS

我已经在 API Gateway 中启用了 CORS 资源,但它不起作用

0 投票
2 回答
2075 浏览

aws-lambda - API 网关响应状态为 0,集成延迟 10000 毫秒

这是我从 API Gateway 自动生成的 javascript SDK 中得到的错误。

我查看了我的 cloudwatch 日志,通话成功。我将 API 网关绑定到 AWS lambda 作为无服务器功能设置。

我从未见过这些类型的错误,但今天我得到了其中的 5 个。随后的电话都奏效了。

编辑:这可能与CORS设置有关吗?每隔一段时间,API 网关似乎就会打嗝并且没有发回适当的 CORS。可能是当功能很冷的时候?我不确定...

编辑 2:我刚刚验证过——我的所有 OPTIONS 端点(用于 CORS)都不需要 auth 或 api 密钥。所以我不认为是这样。

编辑 4:编辑 3 错了,我打错了终点。使用 curl 访问我的 API OPTIONS 端点可以正常工作。

编辑 5:查看 cloudwatch 中的 API 网关日志,它们看起来是这样的……此时完全迷失了。

编辑 6:它还显示了 10000 毫秒的集成延迟......

编辑 7:这是我编写的每个函数的开始方式......

我想强调一下,在我所说的情况下,永远不会达到 logRequest 功能——没有写入云手表的日志。是的,logRequest 是我在每个函数中做的第一件事。

编辑8:我在过去一周左右没有看到这种情况发生......所以也许它在AWS方面并且它已修复?如果我发现其他情况,我会更新。

编辑 9:我现在已经看到这发生在其他一些端点上,因为异常被抛出并且没有被处理。但是,这与 10000 集成延迟错误的情况不同。

0 投票
0 回答
174 浏览

microservices - 如何在可用时动态检测新的 REST 调用?

我正在使用 Netflix Zuul 和 Netflix Eureka 创建一个 API 网关,为微服务框架的服务发现做服务注册部分。我正在尝试支持一个用例,其中可能会出现新的微服务公开 REST 调用,或者现有的微服务可能会升级以公开新的 REST 调用,并将版本作为其 URL 的一部分等。Eureka 作为专用的 springboot 应用程序运行Zuul 作为专用应用程序运行。Zuul 的 application.prop 或 application.yml 文件是我为每个微服务放置 zuul.routes 配置的地方

我的 zuul 的 application.yml 看起来像这样,以支持一个微服务配置。

如果我关闭 zuul,在 zuul:routes: 下添加另一个这样的配置片段,然后再次启动 zuul,我将开始看到新的端点。但我希望这种情况动态发生。就像 Eureka 会动态检测任何出现或关闭的新微服务。如果 zuul 可以与 Eureka 同步,那么我所有的 rest 端点都可以通过我的 Zuul api 网关完美地暴露出来。

关于我可能缺少的任何建议或添加任何其他开源第三方来实现这一点都会有所帮助。