Expand description
anycms-core
A unified API response library supporting multiple Rust web frameworks.
§Features
actix(default): Support for actix-web frameworkaxum: Support for axum frameworkvalidator: Integration with thevalidatorcrate for derive-based validationtracing: Automatic error logging via thetracingcratefull: Enable all framework integrationscamel-case(default): Use camelCase for JSON field namessnake-case: Use snake_case for JSON field names
§Basic Usage
use anycms_core::ApiResult;
use serde::Serialize;
#[derive(Serialize)]
struct User {
id: u32,
name: String,
}
fn handle_request() -> ApiResult<User> {
let user = User { id: 1, name: "Alice".to_string() };
ApiResult::value(user)
}§Business Error Code & Timestamp
use anycms_core::ApiResult;
use serde::Serialize;
#[derive(Serialize)]
struct User {
id: u32,
name: String,
}
fn handle_error() -> ApiResult<User> {
ApiResult::fail("User not found")
.with_code(404)
.with_biz_code(10001)
.with_current_timestamp()
}
fn handle_success() -> ApiResult<()> {
ApiResult::ok()
.with_message("Done")
.with_biz_code(0)
.with_timestamp(1700000000000)
}§Error Handling
use anycms_core::ApiResult;
fn handle_error() -> ApiResult<String> {
ApiResult::fail("Resource not found").with_code(404)
}§Validation Errors
use anycms_core::{ApiResult, FieldError};
fn validate() -> ApiResult<String> {
ApiResult::validation_errors(vec![
FieldError::new("email", "invalid format"),
])
}§Request Tracing
use anycms_core::ApiResult;
fn handler() -> ApiResult<String> {
ApiResult::ok().with_trace_id("req-abc123")
}Modules§
- actix
- Framework-specific integrations
Structs§
- ApiResult
- API response wrapper with unified structure
- Field
Error - A single field-level validation error
- Result
Pagination - Pagination metadata for list responses
Enums§
- Error
Code - Standard error codes for API responses
- Response
Data - Response data wrapper that can hold either a single value or a list
Type Aliases§
- Default
Result - Type alias for standard Result with
Box<dyn Error>.