增加prefix-url配置
This commit is contained in:
parent
2bcc0b1018
commit
f34062e162
1
app.toml
1
app.toml
@ -1,5 +1,6 @@
|
|||||||
[server]
|
[server]
|
||||||
name = "chuanyue-server"
|
name = "chuanyue-server"
|
||||||
|
prefix_url = "/gm/v1"
|
||||||
port = 8000
|
port = 8000
|
||||||
debug = true
|
debug = true
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ pub struct Config {
|
|||||||
#[derive(Clone, Debug, Deserialize)]
|
#[derive(Clone, Debug, Deserialize)]
|
||||||
pub struct Server {
|
pub struct Server {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
|
pub prefix_url: String,
|
||||||
pub port: u32,
|
pub port: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,27 +12,29 @@ const WHITE_LIST: &[(&str, &str)] = &[
|
|||||||
|
|
||||||
/// 认证中间件,包括网络请求白名单、token验证、登录缓存
|
/// 认证中间件,包括网络请求白名单、token验证、登录缓存
|
||||||
pub async fn authenticate_ctx(mut req: Request, next: Next) -> Response {
|
pub async fn authenticate_ctx(mut req: Request, next: Next) -> Response {
|
||||||
|
// 解析语言
|
||||||
let mut language = String::from("zh-CN");
|
let mut language = String::from("zh-CN");
|
||||||
|
let language_header = req.headers().get(header::ACCEPT_LANGUAGE);
|
||||||
|
language = match language_header {
|
||||||
|
Some(value) => {
|
||||||
|
let value_str: Vec<&str> = value.to_str().unwrap_or("zh-CN").split(',').collect();
|
||||||
|
if value_str.is_empty() {
|
||||||
|
language
|
||||||
|
} else {
|
||||||
|
String::from(value_str[0])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
None => language,
|
||||||
|
};
|
||||||
|
req.extensions_mut().insert(WhiteContext { lang_tag: language.clone() });
|
||||||
// 获取请求的url和method,然后判断是否在白名单中,如果在白名单中,则直接返回next(req),否则继续执行下面的代码
|
// 获取请求的url和method,然后判断是否在白名单中,如果在白名单中,则直接返回next(req),否则继续执行下面的代码
|
||||||
let method = req.method().clone().to_string();
|
let method = req.method().clone().to_string();
|
||||||
let uri = req.uri().path_and_query().unwrap().to_string();
|
let mut uri = req.uri().path_and_query().unwrap().to_string();
|
||||||
|
uri = uri.replace(&config!().server.prefix_url, "");
|
||||||
|
tracing::debug!("请求路径: {}", uri);
|
||||||
if WHITE_LIST.into_iter().find(|item| {
|
if WHITE_LIST.into_iter().find(|item| {
|
||||||
return item.0 == method && item.1 == uri;
|
return item.0 == method && item.1 == uri;
|
||||||
}).is_some() {
|
}).is_some() {
|
||||||
// 解析语言
|
|
||||||
let language_header = req.headers().get(header::ACCEPT_LANGUAGE);
|
|
||||||
language = match language_header {
|
|
||||||
Some(value) => {
|
|
||||||
let value_str: Vec<&str> = value.to_str().unwrap_or("zh-CN").split(',').collect();
|
|
||||||
if value_str.is_empty() {
|
|
||||||
language
|
|
||||||
} else {
|
|
||||||
String::from(value_str[0])
|
|
||||||
}
|
|
||||||
},
|
|
||||||
None => language,
|
|
||||||
};
|
|
||||||
req.extensions_mut().insert(WhiteContext { lang_tag: language });
|
|
||||||
return next.run(req).await;
|
return next.run(req).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,8 @@ pub async fn serve() {
|
|||||||
|
|
||||||
/// 初始化router,包括router中间件和数据
|
/// 初始化router,包括router中间件和数据
|
||||||
fn init() -> Router {
|
fn init() -> Router {
|
||||||
|
let auth: Router = controller::init();
|
||||||
|
|
||||||
let trace_layer = TraceLayer::new_for_http().make_span_with(|request: &Request<Body>| {
|
let trace_layer = TraceLayer::new_for_http().make_span_with(|request: &Request<Body>| {
|
||||||
let req_id = match request
|
let req_id = match request
|
||||||
.headers()
|
.headers()
|
||||||
@ -34,11 +36,9 @@ fn init() -> Router {
|
|||||||
tracing::error_span!("request_id", id = req_id)
|
tracing::error_span!("request_id", id = req_id)
|
||||||
});
|
});
|
||||||
|
|
||||||
let auth: Router = controller::init();
|
|
||||||
|
|
||||||
Router::new()
|
Router::new()
|
||||||
.route("/", get(|| async { "hello" }))
|
.route("/", get(|| async { "hello" }))
|
||||||
.nest("/gm/v1", auth)
|
.nest(&config!().server.prefix_url, auth)
|
||||||
.layer(
|
.layer(
|
||||||
ServiceBuilder::new()
|
ServiceBuilder::new()
|
||||||
.layer(axum::middleware::from_fn(
|
.layer(axum::middleware::from_fn(
|
||||||
@ -48,6 +48,7 @@ fn init() -> Router {
|
|||||||
library::middleware::req_log::handle,
|
library::middleware::req_log::handle,
|
||||||
))
|
))
|
||||||
.layer(axum::middleware::from_fn(library::middleware::cors::handle))
|
.layer(axum::middleware::from_fn(library::middleware::cors::handle))
|
||||||
|
.layer(trace_layer)
|
||||||
.layer(axum::middleware::from_fn(
|
.layer(axum::middleware::from_fn(
|
||||||
library::middleware::req_id::handle,
|
library::middleware::req_id::handle,
|
||||||
))
|
))
|
||||||
|
Loading…
Reference in New Issue
Block a user