使用 GCP API 网关为 Graphql 后端打开API 配置?
OpenAPI config for a Graphql backend using GCP API Gateway?
我有一个 apollo/graphql 服务器位于 GCP API 网关后面。 Google 表示它需要 OpenAPI 规范来保护端点:
https://cloud.google.com/api-gateway/docs/get-started-cloud-run#creating_an_api_config
但这对于保护单个 graphql 端点究竟会怎样?另外,作为附带问题,是否需要为每个云 Run/App 引擎服务创建一个新的 API 网关?
提前致谢。
Here's a repo 展示了您想要实现的目标。它是一个 GCP API 网关,面向云 运行 上的 GraphQL API,使用身份感知代理进行保护。这是 link 中的 API 配置:
api-spec.yaml
swagger: '2.0'
info:
title: gcp-demo-api
description: Sample GraphQL API on API Gateway with a Cloud Run backend
version: 1.0.0
schemes:
- https
produces:
- application/json
paths:
/:
post:
summary: GraphQL endpoint
operationId: gql
x-google-backend:
address: https://PROJECT_AND_RANDOM_STRING.a.run.app/graphql # App URL/endpoint
jwt_audience: LONG_RANDOM_STRING.apps.googleusercontent.com # IAP client ID
responses:
'200':
description: A successful response
schema:
type: object
要回答您的附带问题,了解 API 网关的作用很重要。 API 网关位于您的用户请求和您的后端服务集合之间,因此所有 API 请求都会通过它。
因此,您不需要为每个服务创建新的 API 网关。 API Gateway 可以通过在每个端点上指定后端地址来为 Cloud 运行、App Engine、Cloud Functions 等多种服务提供服务。这是进一步解释这个概念的link。
我有一个 apollo/graphql 服务器位于 GCP API 网关后面。 Google 表示它需要 OpenAPI 规范来保护端点: https://cloud.google.com/api-gateway/docs/get-started-cloud-run#creating_an_api_config
但这对于保护单个 graphql 端点究竟会怎样?另外,作为附带问题,是否需要为每个云 Run/App 引擎服务创建一个新的 API 网关?
提前致谢。
Here's a repo 展示了您想要实现的目标。它是一个 GCP API 网关,面向云 运行 上的 GraphQL API,使用身份感知代理进行保护。这是 link 中的 API 配置:
api-spec.yaml
swagger: '2.0'
info:
title: gcp-demo-api
description: Sample GraphQL API on API Gateway with a Cloud Run backend
version: 1.0.0
schemes:
- https
produces:
- application/json
paths:
/:
post:
summary: GraphQL endpoint
operationId: gql
x-google-backend:
address: https://PROJECT_AND_RANDOM_STRING.a.run.app/graphql # App URL/endpoint
jwt_audience: LONG_RANDOM_STRING.apps.googleusercontent.com # IAP client ID
responses:
'200':
description: A successful response
schema:
type: object
要回答您的附带问题,了解 API 网关的作用很重要。 API 网关位于您的用户请求和您的后端服务集合之间,因此所有 API 请求都会通过它。
因此,您不需要为每个服务创建新的 API 网关。 API Gateway 可以通过在每个端点上指定后端地址来为 Cloud 运行、App Engine、Cloud Functions 等多种服务提供服务。这是进一步解释这个概念的link。