问题标签 [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 投票
1 回答
1069 浏览

json - 如何获取 Lambda API 的通用响应格式?

我将 Node.js 用于 AWS Lambda + API Gateway API。

我有多个 Lambda 函数,每个函数都提供不同的响应格式,因为它集成了多个第三方 SDK,如 Stripe/DynamoDB 等。

有什么方法可以为下面的所有功能获得共同的响应?

0 投票
1 回答
321 浏览

amazon-web-services - AWS API Gateway - AWS 服务集成 - 执行角色继承

API Gateway AWS 服务集成配置中的是否可以Execution role从正在运行的用户继承策略权限。

目前,我们正在为 API auth 使用自定义授权器,它的输出返回一个带有statementOne.Action = 'execute-api:Invoke'. 将 API Gateway 与 S3 等其他 AWS 服务集成时,是否可以限制或增加 API 的权限。

例如,是否可以有一个带有 API Gateway S3 代理的自定义授权方并设置条件 IAM 策略以仅允许 userId(通过 设置principalId)获取前缀为 userId 的 S3 对象???

此处获取的 AWS 文档中查看此图像中的执行角色;AWS API 网关集成设置

0 投票
1 回答
9212 浏览

microservices - API网关模式和BFF有区别吗?

我的理解是 API 网关模式就像是所有微服务的代理。所以客户端调用 API 网关来处理进一步的路由。BFF 是 API 网关模式的一个特定案例,我们为每种类型的客户端都有一个路由机制。我对吗?

0 投票
0 回答
540 浏览

microservices - 在 api 网关级别或微服务级别合并数据?

我正在使用 API 网关来公开微服务资源。

我有以下情况(尽可能简化)

微服务A - serve 在 /product-prices/{id} 上提供产品价格

微服务 B - 在 /product-availability/{id} 上提供产品可用性

为了获得产品价格和可用性,我需要执行以下操作

a) 让微服务 A 依赖于微服务 B 并拥有 /product-prices-and-availability/{id} 端点

或者

b) 让 API 网关消费微服务 A 和微服务 B 以提供价格端可用性资源

基本上我的问题是我应该在微服务级别还是在 api 网关级别合并数据?

0 投票
1 回答
499 浏览

authentication - 如何让 OAuth 2.0 正确地在我的自定义 API .net 核心中使用外部 API

我想在后台创建一个自定义 API,调用使用 OAuth 2.0 进行身份验证的其他 API 的编号。我想在内部对此进行管理,以便我的自定义端点对此有所抽象。

或者首先我想做缓冲区(https://buffer.com)之类的应用程序 - 您连接到不同的社交服务并发布您的状态。

如何在 .NetCore 中实现这一点?我不想用这些登录(很多示例都适合这种情况),用户登录与此不同。我只想建立这些连接(如果您查看 Azure API 管理,就像 API 连接),然后对这些端点执行一些操作。

我希望我能传达我的观点。如果不清楚,请告诉我。

谢谢桑杰

0 投票
1 回答
609 浏览

iframe - 客户端可以绕过API网关调用前端微服务吗?

我们的系统是使用微服务构建的,所有微服务都位于 API 网关后面。由于它们都是 REST API 服务,我很清楚使用 API 网关的好处和重点。现在,前端微服务(既具有 UI 又具有相应后端来处理内部通信的小组件)呢?是否存在代理每个微服务 HTTP 调用有害的情况?

例子

我们的微服务之一是支付提供商集成。由于处理支付有特定的规定,其中之一是需要将网络浏览器重定向到用户的银行页面以进行授权。由于这不可能以纯粹的后端方式进行,因此我们提供前端微服务- 一种本质上提供 HTML 的服务,您必须嵌套在 iframe 中,并且应该能够以 e2e 方式处理付款。下面是非常简化和剥离的示例。

假设您正在使用https://acme.com/order并想要付款,其中嵌入了这样的代码段:

对于https://acme.com. iframe 内部发生的事情会保留在那里。https://pay.acme.com但是现在担心:收集信用卡详细信息,验证它们,将用户重定向到银行页面以输入 2FA 代码或任何需要的内容,等到付款被批准,最后将用户返回到returnUrl付款顺序的正确路径最终确定(orderId)。

现在,pay.acme.com frontend <-> pay.acme.com backend沟通呢?是否可以让微服务与自己对话,或者更确切地说,所有的,甚至是对 API 消费者没有任何意义的内部通信,都必须通过 API 网关?这当然是可以做到的,并且仍然保持微服务解耦并且不知道 API 网关,但这比偏离始终执行约束并带来非常小的好处要昂贵得多,因为我们不使用任何高级速率限制或现在代理功能。

0 投票
1 回答
424 浏览

android - 如何将 AWS API Gateway 生成的 SDK 与 Android Volley 一起使用

我正在使用带有访问密钥、秘密密钥和 api 密钥的 IAM 安全 API 网关。我之前使用的sdk如下:

这工作正常。

我的问题是如何将 SDK 与 Android volley 库(StringRequest/JSONObjectRequest)一起使用。我不想手动计算 aws 授权签名并将其添加到标头,而是我想使用 sdk。

注意:我不想使用 AWS 推荐的输出模型,因为我没有映射响应。

提前致谢。

达维特

0 投票
3 回答
2478 浏览

api - 使用带有 KONG API 网关的 cookie 进行 JWT 身份验证

我们正在使用带有 JWT 身份验证插件的 Kong API 网关实现示例应用程序。

正如在这个线程中提到的,有两种方法可以在浏览器中存储 JWT。网络存储或 cookie。但是网络存储(即会话存储和本地存储)很容易受到跨站脚本攻击(XSS)的攻击。所以其他选择是cookie。(虽然应该注意 CSRF)

我有两个问题,

  1. 如果我们使用Web 存储来存储 JWT,那么有什么方法可以阻止 XSS。如果是,那么如果在新选项卡中打开同一页面或重新加载同一页面,它将如何工作?

  2. 使用 cookie:我们能够在请求中发送 cookie。但是,只有在标头( )上设置Authorisation: Bearer token了 JWT并且不使用 cookie 进行身份验证时,KONG 才会对端点 URL进行身份验证。有什么方法可以验证使用 KONG API Gateway 在 cookie 中设置的 JWT 吗?

0 投票
1 回答
3200 浏览

rest - SOAP to Rest 网关的最佳解决方案

我有一个需要转换为 Rest 的 SOAP API。我需要帮助寻找解决方案来管理从 SOAP 到 Rest 的翻译。

我已经实现了一组新的 Restful API,将曾经操作多个对象的单个 SOAP 请求转换为专注于单个对象的单个 Rest 调用。

例如:

在单个 Soap 调用 createUser() 中: 1. 创建用户个人资料信息 2. 创建帐户 3. 发送欢迎电子邮件

现在将其分解为三个调用:

  1. 创建个人资料()
  2. 创建账户()
  3. 通知用户()

我正在寻找的基本内容:

  1. 允许将 SOAP API 转换为 Rest API
  2. 允许将单个 SOAP 请求转换为多个 Rest API 请求
  3. 管理链式 Rest API 请求(如果一个 SOAP 调用导致多个 Rest 调用,我们需要管理第一个调用成功,但第二个调用失败)
  4. 需要映射所有错误消息
  5. 需要可扩展

有商业解决方案(Apigee)和开源解决方案(Kong)。

我的问题是:

  1. 什么解决方案会奏效?
  2. 我应该首先使用哪些解决方案进行 POC?

谢谢!

0 投票
1 回答
391 浏览

amazon-web-services - SAM Lambda event with an explicit API as the event source

I am trying to set up an event on my lambda function in my SAM template, but I want the event source to be an explicit API endpoint.

The documentation shows an event with an implicit API as an event source:

This would be the explicit API definition:

How do I explicitly set the event source to be MyApi?