gcp api 网关在调用 x-google-backend 之前是否根据 OpenAPI 规范验证请求主体?

Does gcp api gateway validate request body against OpenAPI spec before calling x-google-backend?

当我使用邮递员时,

Google 似乎没有验证我的请求正文架构,甚至没有验证请求是否有正文。我错过了什么吗?对我来说,这意味着 google 在调用 x-google- 后端之前验证了这类事情,但它总是将请求传递到我的云函数,无论我是否传递有效数据。

我正在使用这个问题 作为指导。

/users:
    post:
      summary: Creates a new user.
      operationId: createUser
      consumes:
        - application/json
      parameters:
        - in: body
          name: body
          description: The user to create.
          required: true
          schema:
            $ref: './schemas/user.yaml'
      x-google-backend:
        address: https://us-central1-blablabla.cloudfunctions.net/blabla
      responses:
        201:
          description: Created

user.yaml:

type: object
required:
- username
- password
- repeatPassword
- email
properties:
  username:
    type: string
    minLength: 3
    maxLength: 50
  password:
    type: string
    minLength: 6
    maxLength: 64
  repeatPassword:
    type: string
    minLength: 6
    maxLength: 64
  email:
    type: string
    minLength: 3
    maxLength: 50

目前,使用 OpenAPI 时存在一些限制。可扩展服务代理 (ESP) 或 Cloud Endpoints Framework 忽略了一些范围。

首先是required参数。 Endpoints 接受包含必需参数和类型定义的 OpenAPI 文档,但这不是 ESP 所要求的,只是将传入请求转发到您的 API.

最后是外部类型引用。端点不支持对 OpenAPI 之外的类型的引用,这意味着,$ref: './schemas/user.yaml' 将被端点忽略。

请注意,您对 API 网关使用与用于 Cloud Endpoints 相同的 OpenAPI 语法,这些链接还引用了 Cloud Endpoints 文档中的位置。

这是 guide for OpenAPI feature limitations。它还包括被 OpenAPI.

忽略的其他范围、参数、模式和类型

我还建议提交 feature request。这样以后,这些功能就可以用到这些类型的项目中了。

只是补充罗伯特已经说过的话,看起来这不是 API 网关提供的东西,正如所讨论的 here:

“我们可以将任何 'logic' 添加到 Google API GW 吗?一个例子是检查有效负载(在验证 JWT 和 API 之后)和决定是调用微服务 A 还是调用微服务 B;

不,不支持。"