Protocol buffers grpc/protobuffer询问特定字段
GraphQL允许您请求特定字段,响应仅包含您请求的字段。例如: graphql查询类似于:Protocol buffers grpc/protobuffer询问特定字段,protocol-buffers,grpc,grpc-java,protobuf-java,Protocol Buffers,Grpc,Grpc Java,Protobuf Java,GraphQL允许您请求特定字段,响应仅包含您请求的字段。例如: graphql查询类似于: { hero { name } } { hero { name friends { name } } } 将返回: { "data": { "hero": { "name": "R2-D2" } } } 其中,作为
{
hero {
name
}
}
{
hero {
name
friends {
name
}
}
}
将返回:
{
"data": {
"hero": {
"name": "R2-D2"
}
}
}
其中,作为graphQl查询,类似于:
{
hero {
name
}
}
{
hero {
name
friends {
name
}
}
}
将返回:
{
"data": {
"hero": {
"name": "R2-D2",
"friends": [
{
"name": "Luke"
},
{
"name": "Han Solo"
},
{
"name": "Leia"
}
]
}
}
}
gRPC中是否有类似的机制/库/模式可用于实现相同的功能?IIUC,GraphQL只是在网络上传输(字符串)查询,由后端处理,生成结果,然后发送回客户端 我认为惯用的gRPC方法应该有不同的方法:
service服务{
rpc Hero(HeroRequest)返回(HeroResponse);
rpc好友(FriendsRequest)返回(FriendsResponse);
}
如果希望使用gRPC传输类似GraphQL的数据,可以将查询封装在请求中,像以前一样在后端处理GraphQL,然后将结果以protobuf消息的形式发送回客户端:
service服务{
rpc查询(QueryRequest)返回(QueryResponse);
}
方法查询请求{
字符串查询=1;
}
IIUC,GraphQL只是在网络上传输(字符串)查询,由后端处理,生成结果,然后发送回客户端
我认为惯用的gRPC方法应该有不同的方法:
service服务{
rpc Hero(HeroRequest)返回(HeroResponse);
rpc好友(FriendsRequest)返回(FriendsResponse);
}
如果希望使用gRPC传输类似GraphQL的数据,可以将查询封装在请求中,像以前一样在后端处理GraphQL,然后将结果以protobuf消息的形式发送回客户端:
service服务{
rpc查询(QueryRequest)返回(QueryResponse);
}
方法查询请求{
字符串查询=1;
}
在protobuf中类似。它是一个要保留的字段列表,因此第一个示例是路径:“hero.name”,第二个示例是路径:[“hero.name”、“hero.friends.name”]
它可能最常用于指定更新中应更改哪些字段。但它同样可以用于指定应返回的字段
服务器可以直接处理字段掩码(例如,仅使用SELECT SQL查询中列出的字段),也可以检索所有信息并过滤结果,只将请求的字段复制到新的proto消息中以返回到客户端。与protobuf类似。它是一个要保留的字段列表,因此第一个示例是路径:“hero.name”,第二个示例是路径:[“hero.name”、“hero.friends.name”]
它可能最常用于指定更新中应更改哪些字段。但它同样可以用于指定应返回的字段
服务器可以直接处理字段掩码(例如,仅使用SELECT SQL查询中列出的字段),也可以检索所有信息并过滤结果,只将请求的字段复制到新的proto消息中以返回到客户端