当前位置: 首页 > 知识库问答 >
问题:

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

司寇照
2023-03-14

当我使用postman时,谷歌似乎没有验证我的请求主体架构,甚至没有验证请求有主体。我错过了什么吗?对我来说,这意味着谷歌在调用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

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

共有2个答案

冯霖
2023-03-14

只是补充一下Robert已经说过的内容,看起来这不是API网关提供的东西,如下所述:

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

不,不支持这个。”

房新翰
2023-03-14

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

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

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

请注意,您对API网关使用与云endpoint相同的OpenAPI语法,这些链接也指云endpoint留档中的位置。

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

我还建议提交一个功能请求。通过这种方式,这些功能将在未来可用,并将应用到这些类型的项目中。

 类似资料:
  • 我有一个从swagger 2.0更新到openapi 3.0.0的yaml规范。 文件本身大约有 7,000 行,因此手动验证具有挑战性。 我需要找出哪些标记不再与openapi 3.0.0兼容。如何验证我的模式?有没有我可以使用的命令行工具? 我不想将此代码复制/粘贴到在线某个地方,因为我不想公开所有路由。

  • 我想使用 AWS CDK 来定义 API 网关和 APIG 将代理到的 lambda。 OpenAPI规范支持Swagger规范的自定义扩展(详见此处),为此需要lambda的调用URL。如果lambda与API在同一个堆栈中定义,我看不出如何在OpenAPI规范中提供此内容。我能想到的最好的办法是定义一个包含lambda的堆栈,然后从中获取输出并运行在OpenAPI规范中执行查找和替换以插入ur

  • 我试图设计一个应用程序,允许用户根据不同的配置创建订阅——表达他们在满足这些条件时接收警报的兴趣。 在评估实现相同功能的选项时,我考虑使用Drools等通用规则引擎来实现相同功能。从高层来看,这似乎是一个自然的适合这个问题的方法。但深入挖掘并仔细思考一下,我怀疑业务规则引擎是否是正确的使用方式。 我认为规则引擎可以根据预定义的条件选择规则,并将规则应用于该数据以产生结果。然而,我的要求是从数据(生

  • 我在API Gateway swagger文件(OAS 3.0)中添加了一个请求验证器。当我通过传入一个无效的请求体来测试验证时,我收到的错误消息包括我不理解的错误。复制步骤如下。 使用以下变量创建新的 api 网关: 为新创建的员工资源设置集成方法,选择模拟集成。 使用以下请求正文测试员工发布方法: 此请求主体的请求验证将成功 您现在将看到以下请求验证错误: 您可以看到此消息包含正确的错误,指出

  • 我们希望将我们的swagger规范拆分为两个文件。一个包含endpoint,一个包含类型定义,因为类型定义用于多个项目,我们希望避免在多个源位置修复某些内容。 我们使用maven codegen插件来生成模型和api,它可以很好地进行拆分。 但是,请求验证不会,因为它无法遵循对它所显示的类型定义的外部引用。 我们使用swagger-request-validator-spring MVC进行请求验

  • 我需要在收到请求之前验证头。我发现tomcat阀门可以在里面帮忙。我遵循以下步骤,但不调用valve: > 制作一个maven项目并在其中执行以下代码。