Skip to main content

Module serde

Module serde 

Source
Expand description

§Serialization/Deserialization Module

This module provides traits and utilities for handling HTTP request and response body serialization and deserialization. It enables automatic conversion between Rust types and various data formats like JSON, form data, and other content types.

§Key Components

  • RequestBody: Trait for serializing request bodies into bytes
  • ResponseBody: Trait for deserializing response bodies from bytes
  • Content type registration and management
  • Format-agnostic serialization interface

§Features

  • Format Agnostic: Support for multiple serialization formats
  • Content Type Management: Automatic content-type header handling
  • Type Safety: Compile-time guarantees for serializable types
  • Error Handling: Comprehensive error reporting for serialization failures
  • Extensibility: Easy to add new serialization formats

§Usage

§Implementing Custom Request Body Serializer

use deboa::client::serde::RequestBody;
use deboa::{request::DeboaRequest, Result};
use serde::Serialize;

struct JsonBody;

impl RequestBody for JsonBody {
    fn register_content_type(&self, request: &mut DeboaRequest) {
        request.set_content_type("application/json");
    }

    fn serialize<T: Serialize>(&self, value: T) -> Result<Vec<u8>> {
        serde_json::to_vec(&value).map_err(Into::into)
    }
}

§Implementing Custom Response Body Deserializer

use deboa::client::serde::ResponseBody;
use deboa::Result;
use serde::Deserialize;

struct JsonBody;

impl ResponseBody for JsonBody {
    fn deserialize<T: for<'de> Deserialize<'de>>(&self, bytes: &[u8]) -> Result<T> {
        serde_json::from_slice(bytes).map_err(Into::into)
    }
}

§Integration with HTTP Client

The serialization traits are used internally by the Deboa client to handle:

  • Automatic JSON serialization for request bodies
  • JSON deserialization for response bodies
  • Form data encoding and decoding
  • Custom content type handling

Traits§

RequestBody
Trait that represents request body serialization capabilities.
ResponseBody
Trait that represents response body deserialization capabilities.