Closed
Description
实现triple协议中支持curl访问的能力
**基本思路:** 将接收到content-type为application/json的请求携带的数据转化为对应的grpc Message,再交给实际的handle进行处理,再将返回的grpc Message序列化为json数据,返回给客户端,以支持curl直接访问
**实现方案:**
- 使用prost-serde库,以支持prost生成的代码能与serde序列化工具能协同工作
- 修改dubbo-build模块,在编译生成代码时为Message实现使用serde库进行序列化反序列化的能力,以支持将json数据转化为grpc消息,如下所示:
#[derive(Serialize, Deserialize)]
#[serde(crate = "::serde")]
#[serde(rename_all = "snake_case")]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
‘pub struct GreeterReply {
#[prost(string, tag = "1")]
pub message: ::prost::alloc::string::String,
}` - 修改TripleServer部分代码,以支持根据不同的content-type采用不同的处理方式
- 修改Decoding部分代码或者添加一个专用于解析json数据的Decoding,以支持对于application/json请求数据的接收和处理
- 修改dubbo-build的构建规则,使prost生成的代码中加入对content-type的判断,以此分配不同的codec分别处理proto和json格式数据
Metadata
Metadata
Assignees
Labels
No labels