- Added a new crate `doc` for API documentation. - Integrated `utoipa` for OpenAPI support in the presentation layer. - Updated routes to include social features (follow, unfollow, etc.) and diary export. - Enhanced API request and response structures with new DTOs for social interactions. - Updated `Cargo.toml` files to include new dependencies and features. - Modified Dockerfile to copy the new documentation crate. - Refactored existing handlers and routes to accommodate new API endpoints. - Updated tests to cover new functionality and ensure proper API behavior.
17 lines
484 B
Rust
17 lines
484 B
Rust
use axum::Router;
|
|
use utoipa::openapi::OpenApi;
|
|
use utoipa_scalar::{Scalar, Servable};
|
|
use utoipa_swagger_ui::SwaggerUi;
|
|
|
|
pub trait ApiDocExt {
|
|
fn with_api_doc(self, spec: OpenApi) -> Self;
|
|
}
|
|
|
|
impl ApiDocExt for Router {
|
|
fn with_api_doc(self, spec: OpenApi) -> Self {
|
|
tracing::info!("API docs at /docs (Swagger) and /scalar");
|
|
self.merge(SwaggerUi::new("/docs").url("/openapi.json", spec.clone()))
|
|
.merge(Scalar::with_url("/scalar", spec))
|
|
}
|
|
}
|