API Gateway是否自动验证输入模型?

use*_*521 22 amazon-web-services aws-api-gateway

我在AWS API网关中创建了具有以下端点的简单API:

POST /v1/users
Run Code Online (Sandbox Code Playgroud)

在方法执行/方法请求中,我添加了请求模型:

在此输入图像描述

此模型架构如下所示:

在此输入图像描述

但是,当我使用json body向该端点发出请求时,{ "foo": "bar" }它不会拒绝它并执行我的lambda函数...

那么,如果没有用于验证请求,为什么还有定义JSON模式的选项呢?

IAm*_*dge 19

试着自己解决这个问题,我看到你们几个小时前才问过这个问题!

到目前为止,我发现的唯一参考是:

http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings.html

对于非GET方法类型,请展开"请求模型",对于"内容类型"和"模型名称",键入内容类型,然后选择将调用者提供的数据转换为预期格式的模型名称.

所以似乎更多的是转型而不是验证 - 但它并不是特别清楚它是如何实际运作的.

UPDATE

我刚注意到这个HackerNews主题:

https://news.ycombinator.com/item?id=9880683

其中一位AWS工程师在那里做出回应,并说:

验证不需要模型.它们仅用于在客户端SDK中生成对象.

  • 它可能是这样的 - 他们确实计划发布基于模式的验证作为一项功能,但正等待有足够的人尝试使用它/抱怨它不起作用 - 实际上继续实施它.这是希望它很快成为一个功能. (8认同)
  • 多么浪费资源.基于模型的验证将是我使用带有Swagger模板的API网关的首要原因.这对我来说没有多大意义:( (8认同)
  • 我还发现`在API网关中,模型定义了某些数据的格式,也称为模式或形状.您可以创建和使用模型,以便更轻松地创建映射模板.由于API网关主要用于JavaScript对象表示法(JSON)格式化数据,因此API网关使用JSON模式在文档中定义数据的预期模式.因此看起来所有模式都是无用的(悲伤)和最好的方法是直通数据...... (2认同)