Grpc相对于Rest Apis的优势

4
什么是grpc协议,与rest api相比有哪些优势?
当我谷歌搜索时,发现了以下两个点:
1. json vs. stubs 2. grpc基于http/2,而rest基于http/1。
我不太明白这样做的好处是什么?
可以有人帮我解释一下grpc的工作原理以及使用它比rest api的优势,并解释上述两个点吗?
谢谢。

它们都有各自的优缺点。Grpc相对于Rest的优势是:JSON消息是松散类型的,而存根消息是强类型的。JSON是基于文本的,而存根消息是基于二进制的。Rest不支持双向流/异步调用/流控制,而Grpc支持。 - user675693
gRPC 在 HTTP/2 上基本遵循 HTTP 语义,但我们明确允许全双工流式传输。我们与典型的 REST 约定不同,因为在调用分派期间使用静态路径可以提高性能,而从路径、查询参数和有效载荷中解析调用参数会增加延迟和复杂性。我们还正式规范了一组错误,我们认为这些错误更直接适用于 API 使用情况,而不是 HTTP 状态码。 - abhilash_goyal
我认为这个问题无法回答,因为REST对不同的人有不同的涵义。因为人们对REST的定义并不一致,所以很难得出一个大多数人都认同的比较结论。 - Carl Mastrangelo
1个回答

1

关于有效负载数据的第一点:
REST使用JSON,它是文本且较大
gRPC使用协议缓冲区来序列化有效负载数据,它是二进制且较小

关于协议的第二点:
REST默认使用HTTP/1(但今天我们可以在REST中使用HTTP/2)
gRPC使用HTTP/2,比HTTP/1.1快得多


1
这不正确,REST!≠ JSON。你可以使用XML,如果你遵循Roy Fielding的论文,它仍然可以是一个RESTful API。gRPC默认使用协议缓冲区,但也可以与JSON一起使用。 - Bata
通常REST使用JSON。但它也可以传递XML、字符串、二进制等格式。 - Ali Borjian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接