发送包含枚举的 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>