发送包含枚举的 REST 请求(在 RPC 中定义)
Send REST request containing an enum (defined in RPC)
我们有一个 delete-rpc
请求在协议中定义为
rpc DeleteTag(DeleteTagRequest) returns (DeleteTagResponse) {
option (google.api.http).delete = "/v2/tags";
}
message DeleteTagRequest {
Tag.Type tag_type = 1; // Tag to delete.
}
message DeleteTagResponse {}
message Tag {
string id = 1; // Tag ID.
Type type = 2; // Tag type.
google.protobuf.BoolValue enabled = 3;
}
enum Type {
UNKNOWN = 0; // Illegal default value, exception will be thrown if used
GOOGLE_ADS = 1;
GOOGLE_ANALYTICS = 2;
YANDEX_METRICA = 3;
FACEBOOK_PIXEL = 4;
GOOGLE_TAG_MANAGER = 5;
}
使用 RPC 调用 API 工作得很好,但是当我尝试使用 Postman 通过 REST 调用此端点时,它失败并显示 http 代码 428(需要先决条件)。
我正在使用 DELETE
方法和以下 json-raw-body:
{
"tag_type": "GOOGLE_ANALYTICS"
}
我不断收到 428 消息“需要标签类型,发现未知。”
我多次尝试更改请求并使用不同的参数发送,甚至尝试更改原型,但 none 我的努力是富有成效的。
知道我做错了什么吗?
显然,在发送 DELETE 请求时,我们需要将参数作为 query-params 传递,而不是像某些 RPC 文档建议的那样作为 body-params 传递。
curl -X DELETE \
'https://www.example.com/v2/tags?tag_type=GOOGLE_ANALYTICS' \
-H 'authorization: <AUTH>
我们有一个 delete-rpc
请求在协议中定义为
rpc DeleteTag(DeleteTagRequest) returns (DeleteTagResponse) {
option (google.api.http).delete = "/v2/tags";
}
message DeleteTagRequest {
Tag.Type tag_type = 1; // Tag to delete.
}
message DeleteTagResponse {}
message Tag {
string id = 1; // Tag ID.
Type type = 2; // Tag type.
google.protobuf.BoolValue enabled = 3;
}
enum Type {
UNKNOWN = 0; // Illegal default value, exception will be thrown if used
GOOGLE_ADS = 1;
GOOGLE_ANALYTICS = 2;
YANDEX_METRICA = 3;
FACEBOOK_PIXEL = 4;
GOOGLE_TAG_MANAGER = 5;
}
使用 RPC 调用 API 工作得很好,但是当我尝试使用 Postman 通过 REST 调用此端点时,它失败并显示 http 代码 428(需要先决条件)。
我正在使用 DELETE
方法和以下 json-raw-body:
{
"tag_type": "GOOGLE_ANALYTICS"
}
我不断收到 428 消息“需要标签类型,发现未知。”
我多次尝试更改请求并使用不同的参数发送,甚至尝试更改原型,但 none 我的努力是富有成效的。
知道我做错了什么吗?
显然,在发送 DELETE 请求时,我们需要将参数作为 query-params 传递,而不是像某些 RPC 文档建议的那样作为 body-params 传递。
curl -X DELETE \
'https://www.example.com/v2/tags?tag_type=GOOGLE_ANALYTICS' \
-H 'authorization: <AUTH>