使用 Amazon API Gateway 构建 API

在 AWS 上部署应用

Dunieski Otano

Amazon Web Services Solutions Architect

三类客户端,一个后端

  • Web、移动端与合作方都调用同一后端
  • 各自使用略有不同的格式
  • "前门"校验并转换每个调用方

 

三类客户端通过单个 API Gateway 连接,请求被路由到后端服务

在 AWS 上部署应用

API Gateway 的作用

API Gateway 作为托管前门:Web 与移动客户端经由中心网关,具备路由、认证、限流与转换功能,连接到 Lambda、HTTP 端点和 AWS 服务

  • 您的 API 的全托管前门
  • 处理路由、认证、限流与转换
  • 位于客户端与您的后端之间
  • 后端可为 Lambda、HTTP 端点或 AWS 服务
在 AWS 上部署应用

集成类型

  • Lambda 代理:将整个请求传给 Lambda
  • Lambda 非代理:由您映射请求与响应字段
  • HTTP:转发到一个 HTTP 后端
  • MOCK:无后端直接返回响应

四种 API Gateway 集成类型:Lambda 代理传递完整请求、Lambda 非代理使用映射模板、HTTP 转发到端点,以及 MOCK 返回静态响应

在 AWS 上部署应用

请求与响应转换

  • 映射模板 使用 VTL 重塑载荷
  • Velocity Template Language 可转换 body、headers、params
  • 请求映射:客户端格式 → 后端格式
  • 响应映射:后端格式 → 客户端格式

VTL 映射模板流程:请求前经请求模板转换后到达后端,后端响应经响应模板再返回给客户端

在 AWS 上部署应用

请求校验

请求校验模式:在调用 Lambda 后端前,按 JSON schema 校验 body,校验必需的查询与请求头参数,或两者都校验

  • 在到达后端之前就拒绝不良输入
  • 必需参数:headers、query strings、paths
  • 模型架构:校验 JSON body 结构
  • 可校验 body、参数,或两者皆校验
在 AWS 上部署应用

状态码与错误契约

  • 覆盖后端状态码以保持一致契约
  • 将后端 502 映射为对客户端更友好的 503
  • 网关响应:自定义错误 body
  • 无论后端如何,客户端都能得到可预期的错误

API Gateway 全流程:校验在入口拒绝无效输入,映射模板为后端重塑有效输入,响应模板将输出格式化为一致的客户端契约

在 AWS 上部署应用

串联全流程

  • 客户端请求 → 校验 → 转换 → 后端
  • 不良输入在入口即被拒绝
  • 有效输入被重塑以适配后端
  • 后端响应被重塑为客户端契约

API Gateway 全流程:校验在入口拒绝无效输入,映射模板为后端重塑有效输入,响应模板将输出格式化为一致的客户端契约

在 AWS 上部署应用

让我们一起练习吧!

在 AWS 上部署应用

Preparing Video For Download...