## gRPC-JSON轉碼過濾器
gRPC-JSON轉碼[配置概述](../../Configurationreference/HTTPfilters/gRPCJSONtranscoderfilter.md)。
### gRPC-JSON轉碼配置
過濾器配置所需要描述符文件以及要轉碼的gRPC服務列表。
```
{
"name": "grpc_json_transcoder",
"config": {
"proto_descriptor": "proto.pb",
"services": ["grpc.service.Service"],
"print_options": {
"add_whitespace": false,
"always_print_primitive_fields": false,
"always_print_enums_as_ints": false,
"preserve_proto_field_names": false
}
}
}
```
- **proto_descriptor**<br />
(required, string) 為gRPC服務提供二進制`protobuf`描述符集。描述符集必須包含在服務中使用的所有類型。確保為`protoc`使用`--include_import`選項。
要為gRPC服務生成一個`protobuf`描述符集,在運行`protoc`之前,還需要從Github中克隆`googleapis`倉庫,因為在`include`路徑中需要`annotations.proto`。
```
git clone https://github.com/googleapis/googleapis
GOOGLEAPIS_DIR=<your-local-googleapis-folder>
```
然后運行`protoc`從`bookstore.proto`生成描述符集:
```
protoc -I$(GOOGLEAPIS_DIR) -I. --include_imports --include_source_info \
--descriptor_set_out=proto.pb test/proto/bookstore.proto
```
如果您有多個原始源文件,您可以在一個命令中傳遞所有這些文件。
- **services**<br />
(required, array) 提供代碼轉換器進行轉碼服務的服務器名稱列表。如果服務名稱在`proto_descriptor`中不存在,Envoy將啟動失敗。`proto_descriptor`可能包含比這里指定的服務名稱更多的服務,但是它們不會進行轉碼。
- **print_options**<br />
(optional, object) 響應json的控制選項。這些選項直接傳遞給[JsonPrintOptions](https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.util.json_util#JsonPrintOptions)。有效的選項是:
- **add_whitespace**<br />
(optional, boolean) 是否添加空格,換行符和縮進以使輸出的JSON易于閱讀。默認為false。
- **always_print_primitive_fields**<br />
(optional, boolean) 是否始終打印原始字段。默認情況下,具有默認值的原始字段將在JSON輸出中被省略。例如,設置為0的`int32`字段將被省略。將此標志設置為true,將覆蓋默認行為并打印原始字段,而不考慮其值。默認為false。
- **always_print_enums_as_ints**<br />
(optional, boolean) 是否始終打印枚舉作為整數。默認情況下,它們呈現為字符串。默認為false。
- **preserve_proto_field_names**<br />
(optional, boolean) 是否保留原始字段名稱。默認情況下,`protobuf`將使用`json_name`選項生成JSON字段名稱,或者按照下面的順序生成較低的駱駝大小寫。設置此標志將保留原始字段名稱。默認為false。
## 返回
- [上一級](../HTTPfilters.md)
- [首頁目錄](../../README.md)
- 首頁
- 簡介
- Envoy是什么
- 架構介紹
- 術語
- 線程模型
- 監聽器
- L3/L4網絡過濾器
- HTTP連接管理
- HTTP過濾器
- HTTP路由
- gRPC
- WebSocket支持
- 集群管理
- 服務發現
- 健康檢查
- 連接池
- 負載均衡
- 異常檢測
- 熔斷
- 全局限速
- TLS
- 統計
- 運行時配置
- 跟蹤
- TCP代理
- 訪問日志
- MongoDB
- DynamoDB
- Redis
- 熱重啟
- 動態配置
- 初始化
- 逐出
- 腳本
- 部署
- 業界對比
- 獲得幫助
- 歷史版本
- 編譯安裝
- 編譯
- 參考配置
- 演示沙箱
- 前端代理
- Zipkin跟蹤
- Jaeger跟蹤
- gRPC橋接
- 構建Envoy Docker鏡像
- 工具
- 配置參考
- V1 API 概述
- V2 API 概述
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP連接管理器
- 路由匹配
- 流量轉移/分流
- HTTP頭部操作
- HTTP頭部清理
- 統計
- 運行時設置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- 故障注入
- DynamoDB
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- 速率限制
- 路由
- Lua
- 集群管理
- 統計
- 運行時設置
- 集群發現服務
- 健康檢查
- 熔斷
- 訪問日志
- 限速服務
- 運行時配置
- 路由表檢查工具
- 運維管理
- 命令行選項
- 熱重啟
- 管理接口
- 統計概述
- 運行時配置
- 文件系統
- 自定義擴展示例
- V1 API參考
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP路由配置
- 虛擬主機
- 路由
- 虛擬集群
- 速率限制配置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- DynamoDB
- 故障注入
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- Lua
- 速率限制
- 路由
- 集群管理
- 集群
- 健康檢查
- 熔斷
- TLS上下文
- 異常值檢測
- HASH環負載均衡配置
- 異常檢測
- 集群發現服務
- 服務發現服務
- 訪問日志
- 管理接口
- 限速服務
- 運行時配置
- 跟蹤
- V2 API參考
- 啟動引導
- 監聽&監聽發現
- 集群&集群發現
- 服務發現
- 健康檢查
- HTTP路由管理&發現
- TLS配置
- 通用的類型
- 網絡地址
- 協議選項
- 發現API
- 限速組件
- 過濾器
- 網絡過濾器
- TLS客戶端身份認證
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP過濾器
- 緩存
- 故障注入
- 健康檢查
- Lua
- 速率限制
- 路由
- gRPC-JSON轉碼器
- 常見訪問日志類型
- 常見故障注入類型
- FAQ
- Envoy有多快?
- 我在哪里獲得二進制文件?
- 我如何設置SNI?
- 如何設置區域感知路由?
- 我如何設置Zipkin跟蹤?