FastAPI 和 GCP API 网关

问题描述 投票:0回答:1

我有一个使用 OpenAPI 3.0 在 FastApi 中开发的后端。它托管在 GCP Cloud 中。 FastAPI 是自动记录的 (Swagger UI),并且它暴露在互联网上。

现在,我正在该服务前面部署一个 GCP API 网关。这是部署在 GCP API 网关中的 openapi.yaml。

swagger: '2.0'
info:
  title: care-chat
  description: Sample API on API Gateway with a Cloud Run backend
  version: 1.0.0
schemes:
- https
produces:
- application/json
x-google-backend:
  address: https://care-navigation-api-zibxv3ldca-ue.a.run.app
paths:
  "/api/v1/tenants":
    get:
      summary: Tenant
      operationId: getTenants
      responses:
        200:
          description: "Success."
          schema:
            type: string

基本上我有两个问题:

  1. 我的 FasAPI 中的每条路由/方法是否都需要在 GCP API Gateway 中一一公开? FastAPI 有很多复杂的对象。
  2. 文档怎么样?我应该在 GCP API 网关上公开它吗?如果是这样,怎么办?为每个 FastAPI 模式创建一个映射似乎是违反直觉的。如果是这样,我想这应该集成到我的 ci/cd 管道中。
fastapi openapi api-gateway google-cloud-api-gateway
1个回答
0
投票

正如我在上面的评论中分享的那样,这篇文章解释了使用

\*\*FastAPI and GCP API Gateway\*\*

的步骤

文章中清楚地解释了众所周知的问题,

Bridging the Gap: Converting FastAPI OpenAPI to Swagger 2.0 for GCP API Gateway compatibility
这将解决问题。

问题

GCP API Gateway 支持的 OpenAPI 文档与 FastAPI 本身自动生成的 OpenAPI 文档不兼容问题。事实上,GCP API Gateway 仅支持 OpenAPI 2.0 版规范。另一方面,使用 .openapi() 方法生成的 OpenAPI 文档仅支持 3.0 版本。

这种不匹配需要将 OpenAPI 文档手动转换为 2.0 版本,然后 API 网关才能使用它。

解决方案 为此,将在链接中清楚地解释。

文章还包含以下明确的解释:

  1. 为什么要使用 Google Cloud API Gateway 进行 FastAPI 项目?.

  2. 如何使用 GCP API 网关部署 FastAPI 项目

© www.soinside.com 2019 - 2024. All rights reserved.