0

当我使用邮递员时,谷歌似乎没有验证我的请求正文架构,甚至没有验证请求有正文。我错过了什么吗?对我来说,这意味着谷歌在调用 x-google-backend 之前会验证这种事情,但它总是将请求传递给我的云函数,无论我是否传递有效数据。

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

/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

用户.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
4

2 回答 2

1

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

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

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

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

这是OpenAPI 功能限制指南。它还包括被 OpenAPI 忽略的其他范围、参数、模式和类型。

我还建议提交功能请求。这样,这些功能将在未来可用,并将实施到这些类型的项目中。

于 2021-12-17T09:19:51.210 回答
0

只是添加罗伯特已经说过的话,看起来这不是 API 网关提供的东西,如下所述

“我们可以向 Google API GW 添加任何‘逻辑’吗?一个例子是检查有效载荷(在 JWT 和 API 验证之后)并决定它是否应该调用微服务 A 或微服务 B;

不,这不受支持。”

于 2021-12-18T20:08:37.090 回答