1、grpc-transcode说明
APISIX网关比较强大,可以直接把GRPC的接口转成http接口进行调用,下面介绍这个apisix网关转换grpc调用的说明
具体的说明参数,可以参照官方文档
https://apisix.apache.org/zh/docs/apisix/plugins/grpc-transcode/
2、具体使用
2.1、上传proto文件
proto文件,内容必须包含pakage,内容如下。下面这个proto,在postman中是可以正常调用grpc接口,但是在apisix中,不会识别java_package,需要增加package的内容。
package com.xff.grpcapi;
curl http://localhost:9180/apisix/admin/protos -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"content" : "具体的proto文件内容",
"id" : "定义一个唯一id",
"desc":""
}'
2.2、生成路由,配置grpc-transcode插件
grpc-transcode参数说明:
proto_id就是上面步骤1的id
service 就是上面的package包名+serviceName(不是具体的实现类的包路径,当时配置的时候被这个卡了很久)
路由接口:
http://10.32.122.101:9180/apisix/admin/routes
路由需要有请求头:X-API-KEY, 一般部署完就有一个具体的值
路由信息如下:
{
"uri": "/grpc/test",
"name": "grpc测试1212",
"desc": "grpc测试1212",
"plugins": {
"grpc-transcode": {
"deadline": 0,
"method": "queryWithPage",
"pb_option": [
"enum_as_name",
"int64_as_number",
"auto_default_values",
"disable_hooks"
],
"proto_id": "grpc_1212",
"service": "com.xff.grpcapi.Testdata",
"show_status_in_body": false
}
},
"upstream": {
"nodes": [
{
"host": "10.255.158.74",
"port": 8891,
"weight": 1
}
],
"type": "roundrobin",
"hash_on": "vars",
"scheme": "grpc",
"pass_host": "pass"
},
"status": 1
}
2.3、测试调用
http://10.32.122.101:9080/grpc/test
可以调用成功