部署 Google Cloud Endpoints 配置失败 Google API Linter 建议
Deploying Google Cloud Endpoints configuration fails Google API Linter recommendations
更新: Cloud Endpoints Portal is being deprecated 2023 年 3 月 21 日后将不再可用。
在关注 Deploying the Endpoints configuration 之后,我已经成功部署了我编译的 .proto
文件和 gRPC API 配置文件。
太棒了。我决定做一个好公民,在我的 .proto
.
上使用 Google's API Linter
这导致了一些包含各种注释的建议。注释需要新的 proto
导入;
之前
syntax = "proto3";
package api.v1;
// Request message for Get method.
message GetFooRequest {
// The field will contain name of the resource requested.
string name = 1;
}
...blah,blah
之后
syntax = "proto3";
package api.v1;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
// Request message for Get method.
message GetFooRequest {
// The field will contain name of the resource requested.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference).type = "api.v1.HelloWorld/Foo"
];
}
...blah,blah
注释需要导入四个新的原型文件:
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
全部都是 Google's Common API protos, therefore I cloned the repo 的一部分到 /Users/Jack/api-common-protos/
中:
git clone https://github.com/googleapis/api-common-protos.git
...并在编译我的 .proto
文件时包含它:
python3 -m grpc_tools.protoc --proto_path=api
--proto_path=/Users/Jack/api-common-protos/google
api/v1/foo.proto
没有错误。伟大的。最后我部署了 API:
gcloud endpoints services deploy api_descriptor.pb api-config.yaml
至此完成。但是,开发人员门户现在显示:
We encountered the following errors while processing this API specification:
API parse error: Error: ENOENT: no such file or directory, open '/tmp/google/api/client.proto'
Please correct these errors and try again.
阴茎:
如果我删除注释(和所需的导入),我的 API 的端点开发人员门户可以正常工作。
这是开发者门户中的错误。我已将其报告给负责的团队。请参阅我发布到 google-cloud-endpoints@googlegroups.com
的 Google's API Linter suggestions with Google Cloud Endpoints?。
临时解决这个问题可能不需要太多努力:
cp /Users/Jack/api-common-protos/google/api/client.proto /tmp/google/api/client.proto
然后文件将在预期的位置可用 - 尽管没有自动放置在那里。
更新: Cloud Endpoints Portal is being deprecated 2023 年 3 月 21 日后将不再可用。
在关注 Deploying the Endpoints configuration 之后,我已经成功部署了我编译的 .proto
文件和 gRPC API 配置文件。
太棒了。我决定做一个好公民,在我的 .proto
.
这导致了一些包含各种注释的建议。注释需要新的 proto
导入;
之前
syntax = "proto3";
package api.v1;
// Request message for Get method.
message GetFooRequest {
// The field will contain name of the resource requested.
string name = 1;
}
...blah,blah
之后
syntax = "proto3";
package api.v1;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
// Request message for Get method.
message GetFooRequest {
// The field will contain name of the resource requested.
string name = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.resource_reference).type = "api.v1.HelloWorld/Foo"
];
}
...blah,blah
注释需要导入四个新的原型文件:
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
全部都是 Google's Common API protos, therefore I cloned the repo 的一部分到 /Users/Jack/api-common-protos/
中:
git clone https://github.com/googleapis/api-common-protos.git
...并在编译我的 .proto
文件时包含它:
python3 -m grpc_tools.protoc --proto_path=api
--proto_path=/Users/Jack/api-common-protos/google
api/v1/foo.proto
没有错误。伟大的。最后我部署了 API:
gcloud endpoints services deploy api_descriptor.pb api-config.yaml
至此完成。但是,开发人员门户现在显示:
We encountered the following errors while processing this API specification:
API parse error: Error: ENOENT: no such file or directory, open '/tmp/google/api/client.proto'
Please correct these errors and try again.
阴茎:
如果我删除注释(和所需的导入),我的 API 的端点开发人员门户可以正常工作。
这是开发者门户中的错误。我已将其报告给负责的团队。请参阅我发布到 google-cloud-endpoints@googlegroups.com
的 Google's API Linter suggestions with Google Cloud Endpoints?。
临时解决这个问题可能不需要太多努力:
cp /Users/Jack/api-common-protos/google/api/client.proto /tmp/google/api/client.proto
然后文件将在预期的位置可用 - 尽管没有自动放置在那里。