版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在当今快节奏的世界中,各种服务和系统之间的无缝集成变得越来越重要。将这些服务整合在一起时,安全性也同样重要。因此,有意义地设计应用程序至关重要,这样可以最大程度地减少不同系统之间的摩擦。本文重点讨论客户端和其他后端服务之间的通信-无论是无服务器功能还是第三方API。无论您是开发人员、架构师还是技术爱好者,本教程都将为您提供建立强大且可扩展的API网关的知识和技能,从而简化客户端和后端服务之间的通信。基础知识的简要回顾在我们深入研究并了解AWSHTTPAPI简化API集成流程的潜力之前,让我们快速回顾一下基本术语。很多人可能了解什么是API和代理网关。也就是说,当我们深入研究这些概念并试图理解本质细节和差异时,事情可能会变得有点令人生畏。API(应用程序编程接口)是一种抽象,允许两个程序相互通信。API可以是API服务提供商以包或端点的形式公开的方法,通过该端点可以传输信息(RESTAPI)。代理网关是将传入请求转发到目标URI的网关,而常规网关在客户端和服务器之间来回发送信息。代理网关也是屏蔽目标URI和API密钥的好方法,否则如果直接从前端(浏览器)进行网络调用,这些目标URI和API密钥就会暴露。HTTPAPI与RESTAPI——有什么区别?从技术上讲,不存在“HTTPAPI”——这是AWS特有的。在AWS上创建API网关时,您可以创建HTTPAPI或RESTAPI。两者之间的区别在于后者在设计API时提供了更大的灵活性,例如每个客户端的节流、请求验证、私有端点等。为什么选择HTTPAPI而不是RESTAPI?如上所述,与HTTPAPI相比,RESTAPI提供了更多的灵活性和细粒度的配置来设置API。那么您为什么要使用HTTPAPI?其实,这并不总是关于有很多选项可供选择的灵活性——除非要求是具体的,否则这通常会在选择正确的选项集时增加噪音。另一方面,HTTPAPI带有有限的配置选项,这有助于您以最少的决策构建API。HTTPAPI的另一个优点是,它允许您将JWT授权者添加到网关,这是RESTAPI中不存在的。如果您在应用程序中使用第三方身份验证系统,则使用JWT授权程序来保护您的API端点是有意义的。最后,HTTPAPI比RESTAPI更便宜。看看显着特征,您应该选择两者中的哪一个完全取决于您的要求。但模糊地说,HTTPAPI对于小型、非业务关键型应用程序来说是一个不错的选择。如何创建HTTP代理网关并与目标URI集成是时候动手了。导航到您的AWS控制台并搜索“APIGateway”。在AWS控制台找到API网关单击“创建API”将向您显示各种可用的API类型。单击HTTPAPI上的“构建”。在HTTPAPI上选择“构建”输入API名称,然后单击“审核并创建”。或者,您可以输入其他必需的配置信息,但暂时忽略它,因为我们将在下面详细介绍配置。创建安全代理网关分为3个部分:定义路线添加集成附加授权者让我们更详细地讨论每一项。如何定义路线路由是与资源操作或目标URI相对应的路径端点。通过在路由中定义路径变量,可以将动态值发送到路由。路径变量是通过在路径变量周围添加花括号来定义的,如下所示:/getmusic/{track}。上面的路由中
{track}是可以用任何值替换的路径变量。一条路线可以有任意数量的路径变量。但是,重要的是要知道查询参数不能添加到路由定义中。定义API代理网关的路由还要确保为定义的路线选择适当的方法。为了简单起见,您可以考虑使用“GET”。如何添加集成这可能是创建代理网关中最重要的步骤。这里具有挑战性的部分是在传入和传出请求之间创建动态值的正确映射。令人惊讶的是,没有任何教程、文档或指南来解决这个问题,所以我希望这会有所帮助。单击新定义的路由的方法后,您可以在右侧窗格中看到路由详细信息。您可能会注意到该路线没有附加任何集成。单击“附加集成”,然后单击“创建并附加集成”。创建并附加集成屏幕在集成类型中,选择“HTTPURI”,因为我们的目标是创建一个代理网关,将请求转发到目标第三方API。从选项中选择“HTTPURI”输入您的目标URI并选择与传入请求相同的方法,以便使用适当的方法转发请求。注意:在目标URI中,您应该仅添加API的域,而不是带有查询参数的整个路径,因为这是我们将通过参数映射构建的内容。例如,假设我们想按曲目名称获取曲目列表。在这种情况下,您的输入端点可能是:/getmusic/{track}根据您使用的第三方API,目标URI可能类似于:/ws/1.1/track.search?q_track={track}我们的目标是确保为track路径变量发送的值正确替换为传出请求的查询参数中的实际值。奇怪的是,如果我们将目标URI定义为:/ws/1.1/track.search?q_track={track},该{track}变量不会被实际值替换。相反,文本字符串{track}按查询参数值的原样发送,无论您请求什么,都会获取相同的错误结果集。为了避免这个陷阱,我们不在目标URI中定义完整路径。继续,添加API的域部分,这应该考虑上面的示例。如您所见,在集成详细信息部分下方,有一个参数映射规则,目前为空。单击“创建”开始添加映射规则。接下来,将映射类型选择为“所有传入请求”,然后选择“添加新映射”。为了创建映射规则,您需要了解以下三件事:应该修改什么应该如何修改修改后的值应该是多少应该修改什么?通常,所有API端点都会有一个以域部分为后缀的路径,例如v1/,这在我们的代理网关端点中是多余的。所以我们想从覆盖路径开始。该值是静态类型化以符合URI路径的内容。以上述API为例,其值应为:/ws/1.1/track.searchURI的动态部分是跟踪值,它是一个查询参数。接下来,我们需要附加一个包含动态值的查询参数。为此,单击“添加新映射”并选择querystring.<querystring_name>要修改的参数,然后选择“附加”。在值输入字段中,输入$request.path.track传入{track}请求中的路径变量名称。总而言之,您的映射规则现在应该如下所示:参数映射规则单击“创建”,现在您的API代理网关应该可以使用了。耶!您可以通过将查询字符串作为新映射附加到路径来类似地附加其他查询参数。例如,API密钥通常作为查询参数发送。此外,还可以在传出请求中发送标头和正文。如何附加授权人尽管在测试API网关时附加授权者不是强制性的,但绝对建议在生产中保护它们。如果您使用的是GoogleAuthenticator等第三方身份验证服务或类似服务,HTTPAPI网关提供了一种基于JWT令牌管理路由授权的简单方法。从左侧菜单导航到“授权”页面,然后单击“创建并附加授权人”。默认情况下,“授权者类型”选择为JWT。键入所需的输入,例如名称、发行者URL和受众。值和格式因您碰巧使用的身份验证服务而异。例如,Google身份验证的颁发者URL是/<project-id>。总结这篇文章的关键在于强调使用参数映射来构建路径,而不是直接在路由中定义它并期待奇迹发生。我注意到的一个缺
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精准补弱 2027届河北省道德与法治中考鲁教版押题预测卷(含答案)
- 2027年广东省道德与法治九年级高分冲刺模拟卷(含答案)
- 备战期中 2026-2027学年第一学期高一历史部编版第八单元单元测试卷(含答案)
- 冲刺期末 2026-2027学年第一学期初二生物苏教版上学期期中测试卷(含答案)
- 2027年中考湖北省语文九年级人教版夯实基础卷(含答案)
- 查漏补缺 2026-2027学年第一学期八年级英语人教版第七单元单元检测卷(含答案)
- 夯实基础 2026年秋季七年级历史部编版上学期期中测试卷(含答案)
- 2027年天津市语文中考中考仿真卷(含答案)
- 超越自我 2026年秋季七年级生物苏教版第三单元单元归类复习卷(含答案)
- 2026 湖北事业编社会工作岗 易错题试卷
- 2027年初中八年级心理健康《绽放自信的花朵》教学设计
- 高中生物高三一轮复习教学设计:植物生长素与其他植物激素核心考点突破
- 2026年最高人民检察院招聘书记员考试试题及答案
- 地震勘探平原地区安全作业培训
- 2025年中国养老地产行业市场研究报告:CCRC与居家养老
- 2026-2027学年人教版八年级上学期数学第一次月考模拟测试抢分卷(含答案)
- 教师五年专业发展目标达成情况个人总结
- (2026秋新版)苏教版五年级数学上册全册教案
- 自我护理能力测定量表(esca)
- 湖南省长沙市2026中考语文作文真题解读及范文
- 2026北京急救中心第三批招聘27人笔试参考题库及答案解析
评论
0/150
提交评论