enhance(server):完成服务器启动。
This commit is contained in:
parent
cd88b97102
commit
2a3954e436
|
@ -5,6 +5,7 @@ use tracing::{error, info};
|
|||
|
||||
mod logging;
|
||||
mod products;
|
||||
mod server_routes;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
|
@ -16,4 +17,22 @@ async fn main() {
|
|||
Err(e) => error!("Failed to load products: {}", e),
|
||||
Ok(_) => info!("Products loaded successfully"),
|
||||
}
|
||||
|
||||
let main_route = server_routes::ServerMainRouter::new();
|
||||
// 启动服务
|
||||
let bind_addr = String::from("0.0.0.0:3000");
|
||||
info!("Server listen on [{}]", bind_addr);
|
||||
let listener = match tokio::net::TcpListener::bind(bind_addr).await {
|
||||
Ok(listener) => listener,
|
||||
Err(e) => {
|
||||
error!("Failed to bind to port 80: {}", e);
|
||||
return;
|
||||
}
|
||||
};
|
||||
if axum::serve(listener, main_route.into_make_service())
|
||||
.await
|
||||
.is_err()
|
||||
{
|
||||
error!("Failed to start server");
|
||||
}
|
||||
}
|
||||
|
|
50
license_server/src/server_routes.rs
Normal file
50
license_server/src/server_routes.rs
Normal file
|
@ -0,0 +1,50 @@
|
|||
use std::ops::Deref;
|
||||
|
||||
use axum::{routing::IntoMakeService, Router};
|
||||
|
||||
/// 系统服务核心路由控制组件。
|
||||
pub struct ServerMainRouter {
|
||||
main_router: Router,
|
||||
}
|
||||
|
||||
impl ServerMainRouter {
|
||||
/// 构建新的系统服务路由组件。
|
||||
pub fn new() -> Box<ServerMainRouter> {
|
||||
Box::new(ServerMainRouter {
|
||||
main_router: Router::new(),
|
||||
})
|
||||
}
|
||||
|
||||
/// 将系统路由转换为可以供绑定使用的服务。
|
||||
pub fn into_make_service(self) -> IntoMakeService<Router> {
|
||||
self.main_router.into_make_service()
|
||||
}
|
||||
|
||||
/// 注册新的子路由进入系统服务路由。
|
||||
///
|
||||
/// - `route`:要注册的子路由。
|
||||
pub fn register<R>(self, route: R) -> Box<Self>
|
||||
where
|
||||
R: Into<Router>,
|
||||
{
|
||||
Box::new(ServerMainRouter {
|
||||
main_router: self.main_router.merge(route),
|
||||
})
|
||||
}
|
||||
|
||||
/// 批量注册子路由进入系统服务路由。
|
||||
///
|
||||
/// - `routes`:要注册的子路由列表。
|
||||
pub fn registers<I, R>(self, routes: I) -> Box<Self>
|
||||
where
|
||||
R: Deref<Target = Router>,
|
||||
I: Iterator<Item = R>,
|
||||
{
|
||||
let router = routes.into_iter().fold(self.main_router, |router, route| {
|
||||
router.merge(route.clone())
|
||||
});
|
||||
Box::new(ServerMainRouter {
|
||||
main_router: router,
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user