从GRPC protobuf curl
进行REST注释的端点时,我没有收到有效的响应
我当前正在运行bookstore server中的here
我能够使用提供的客户端通过GRPC成功命中端点。
$ python bookstore_client.py
ListShelves: shelves {
id: 1
theme: "Fiction"
}
shelves {
id: 2
theme: "Fantasy"
}
当我尝试点击相应的REST端点时,它会返回一个非文本(即非JSON)响应
$ curl --raw --http2 localhost:8000/v1/shelves 2>/dev/null | xxd
00000000: 0000 1804 0000 0000 0000 0400 4000 0000 ............@...
00000010: 0500 4000 0000 0600 0020 00fe 0300 0000 ..@...... ......
00000020: 0100 0004 0800 0000 0000 003f 0001 0000 ...........?....
00000030: 0806 0000 0000 0000 0000 0000 0000 00 ...............
无论uri是什么,我都会收到此回复,即/v1/foobar
的结果相同
以下是protobuf
中的相关行 rpc ListShelves(google.protobuf.Empty) returns (ListShelvesResponse) {
// Define HTTP mapping.
// Client example (Assuming your service is hosted at the given 'DOMAIN_NAME'):
// curl http://DOMAIN_NAME/v1/shelves
option (google.api.http) = { get: "/v1/shelves" };
}
我期望python客户端能够给我相同的响应,但是我从GRPC服务器收到了非文本响应。
答案 0 :(得分:0)
在该示例中,端口8000是gRPC,而不是REST端点。
要运行带注释的终结点,您需要从docs运行可扩展服务代理:
“ Cloud Endpoints支持协议转码,以便客户端可以使用HTTP / JSON访问您的gRPC API。可扩展服务代理(ESP)将HTTP / JSON转码为gRPC。”
REST端点将通过ESP textarea {
border: none;
outline: none;
width: 100%;
height: 50vh;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
resize: none; /*remove the resize handle on the bottom right*/
}
选项在其他端口上服务。