Skip to content

实现triple协议中支持curl访问的能力 #145

@AdachiAndShimamura

Description

@AdachiAndShimamura

实现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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions