通过 Cloud Endpoints 进行 Cloud Firestore REST API 调用?
Making a Cloud Firestore REST API call through Cloud Endpoints?
是否可以创建 Cloud Endpoint 以便对 Firestore REST API 服务进行 HTTP 调用?
原因是使用自定义 URL 来调用 - 例如“https://whatever.com/api/things”,而不是“https://firestore.googleapis.com/v1/projects/YOUR_PROJECT_ID/databases/(默认)/documents/things”。
我尝试为此创建一个 Open API yaml 文件,但出现错误:
User does not have permission to access services instance [firestore.googleapis.com] (or it may not exist): Caller does not have permission 'servicemanagement.services.update' on service 'firestore.googleapis.com'.
甚至有可能吗,还是我必须创建一个 Cloud Function 来实现这一点?
更新
这是我的 yaml
文件:
swagger: '2.0'
info:
title: "My API"
description: "Returns something"
version: 1.0.0
host: "firestore.googleapis.com"
basePath: "v1/projects/app-emojise-com/databases/(default)/documents"
schemes:
- "https"
produces:
- application/json
paths:
"/foo/{fooId}":
get:
summary: "Returns foo"
operationId: "foo"
parameters:
-
name: fooId
in: path
required: true
type: string
responses:
200:
description: "OK"
type: string
404:
description: "Error"
type: string
403:
description: "Forbidden"
type: string
我已经尝试按照给定的示例进行操作 here
您看到的错误是因为您正在尝试将配置上传到 firestore.googleapis.com
,而您并不拥有该配置。这在您的 yaml
文件中的“主机”字段中指定。相反,您必须使用自己的其他域名。
Endpoints 是一个 API“控制平面”,它实际上并不处理代理请求。您正在执行的操作只会将 API 配置上传到我们的服务器。您实际上需要设置某种服务来侦听请求并将它们转发到 Firestore 本身。我们确实提供了一个开源解决方案来执行此操作,称为 ESP,但这仍然需要托管在某个地方。
理论上,Endpoints 旨在保护您自己的 API,而不是 运行 作为其他人的代理。因此,它很可能不会按照您想要的方式工作。
我建议只构建一个合适的 API,并将其托管在 Cloud Run 之类的东西上。您可能仍想对其使用 Endpoints。
是否可以创建 Cloud Endpoint 以便对 Firestore REST API 服务进行 HTTP 调用?
原因是使用自定义 URL 来调用 - 例如“https://whatever.com/api/things”,而不是“https://firestore.googleapis.com/v1/projects/YOUR_PROJECT_ID/databases/(默认)/documents/things”。
我尝试为此创建一个 Open API yaml 文件,但出现错误:
User does not have permission to access services instance [firestore.googleapis.com] (or it may not exist): Caller does not have permission 'servicemanagement.services.update' on service 'firestore.googleapis.com'.
甚至有可能吗,还是我必须创建一个 Cloud Function 来实现这一点?
更新
这是我的 yaml
文件:
swagger: '2.0'
info:
title: "My API"
description: "Returns something"
version: 1.0.0
host: "firestore.googleapis.com"
basePath: "v1/projects/app-emojise-com/databases/(default)/documents"
schemes:
- "https"
produces:
- application/json
paths:
"/foo/{fooId}":
get:
summary: "Returns foo"
operationId: "foo"
parameters:
-
name: fooId
in: path
required: true
type: string
responses:
200:
description: "OK"
type: string
404:
description: "Error"
type: string
403:
description: "Forbidden"
type: string
我已经尝试按照给定的示例进行操作 here
您看到的错误是因为您正在尝试将配置上传到 firestore.googleapis.com
,而您并不拥有该配置。这在您的 yaml
文件中的“主机”字段中指定。相反,您必须使用自己的其他域名。
Endpoints 是一个 API“控制平面”,它实际上并不处理代理请求。您正在执行的操作只会将 API 配置上传到我们的服务器。您实际上需要设置某种服务来侦听请求并将它们转发到 Firestore 本身。我们确实提供了一个开源解决方案来执行此操作,称为 ESP,但这仍然需要托管在某个地方。
理论上,Endpoints 旨在保护您自己的 API,而不是 运行 作为其他人的代理。因此,它很可能不会按照您想要的方式工作。
我建议只构建一个合适的 API,并将其托管在 Cloud Run 之类的东西上。您可能仍想对其使用 Endpoints。