Skip to content

SRPC Http客户端与服务端参数不一致问题 #397

Description

@rayinengineer

假设客户端SRPCHttpClient的proto中定义了message、name两个字段,服务端的proto中只定义了name字段,此时客户端调用的时候,服务端会报RPCStatusReqDeserializeError;在我们的场景中,客户端多给一些参数期望是允许的,服务端这些参数可以不管;我看了下源码,在int SRPCMessage::deserialize(ProtobufIDLMessage *pb_msg)方法中原先的代码
if (JsonToBinaryStream(resolver, GetTypeUrl(pb_msg),
&input_stream, &output_stream).ok())
{
ret = pb_msg->ParseFromString(binary_output) ? 0 : -1;
}

修改
util::JsonParseOptions options;
options.ignore_unknown_fields = true;

if (JsonToBinaryStream(resolver, GetTypeUrl(pb_msg),
&input_stream, &output_stream,options).ok())
{
ret = pb_msg->ParseFromString(binary_output) ? 0 : -1;
}

后续是否可以做成可配置,让调用方自己决定是否需要忽略未知的json字段;

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions