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 bytesResponseBody: 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§
- Request
Body - Trait that represents request body serialization capabilities.
- Response
Body - Trait that represents response body deserialization capabilities.