feat: Add health check endpoint
Introduce a new health check endpoint at `/api/health`. This endpoint returns a JSON response indicating the server's status and configuration details, such as the port, data path, and configured URLs for external services. This change also refactors the application setup by: - Creating a `lib.rs` file to house the `create_router` function, making it reusable for both the main application and integration tests. - Moving configuration loading logic into `main.rs` and passing it as a shared state (`Arc<Config>`) to the router. - Adding a unit test (`health_test.rs`) to verify the functionality of the health check endpoint. - Updating `Cargo.toml` and `Cargo.lock` to include the `tower` dependency, which is used for testing.
This commit is contained in:
+11
-5
@@ -1,12 +1,18 @@
|
||||
mod config;
|
||||
mod error;
|
||||
|
||||
use config::Config;
|
||||
use std::sync::Arc;
|
||||
|
||||
use tokio::net::TcpListener;
|
||||
|
||||
use doctate_server::config::Config;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
dotenvy::dotenv().ok();
|
||||
let config = Arc::new(Config::from_env());
|
||||
println!("Server starting on port {}", config.server_port);
|
||||
|
||||
let addr = format!("0.0.0.0:{}", config.server_port);
|
||||
println!("Server starting on {addr}");
|
||||
|
||||
let app = doctate_server::create_router(config);
|
||||
let listener = TcpListener::bind(&addr).await.unwrap();
|
||||
axum::serve(listener, app).await.unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user