我有一个使用 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
基本上我有两个问题:
正如我在上面的评论中分享的那样,这篇文章解释了使用
\*\*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 网关才能使用它。
解决方案 为此,将在链接中清楚地解释。
文章还包含以下明确的解释: