sync
This commit is contained in:
parent
6d780a4b03
commit
d88a9b920a
27
src/main.rs
27
src/main.rs
@ -25,6 +25,7 @@ async fn main() {
|
||||
let app = Router::new()
|
||||
.route("/", get(root))
|
||||
.route("/tiles/{z}/{x}/{y}", get(get_tile))
|
||||
.route("/test", get(get_test))
|
||||
.layer(cors); // 使用配置好的CORS
|
||||
|
||||
// 启动服务器,监听端口 3050
|
||||
@ -77,6 +78,32 @@ async fn get_tile(
|
||||
}
|
||||
}
|
||||
|
||||
// 瓦片处理器
|
||||
async fn get_test() -> Result<Response, TileError> {
|
||||
// 异步读取文件
|
||||
match fs::read("/Users/xiang.li1/projects/radarprocess/china.png").await {
|
||||
Ok(file_data) => {
|
||||
// 创建响应,设置正确的 Content-Type 和缓存头
|
||||
let response = Response::builder()
|
||||
.status(StatusCode::OK)
|
||||
.header(header::CONTENT_TYPE, "image/png")
|
||||
.header(header::CACHE_CONTROL, "public, max-age=3600") // 缓存1小时
|
||||
.header(
|
||||
header::ETAG,
|
||||
format!(
|
||||
"\"{}\"",
|
||||
generate_etag("/Users/xiang.li1/projects/radarprocess/china.png")
|
||||
),
|
||||
)
|
||||
.body(file_data.into())
|
||||
.map_err(|_| TileError::InternalServerError)?;
|
||||
|
||||
Ok(response)
|
||||
}
|
||||
Err(_) => Err(TileError::TileNotFound),
|
||||
}
|
||||
}
|
||||
|
||||
// 生成简单的 ETag
|
||||
fn generate_etag(path: &str) -> String {
|
||||
use std::collections::hash_map::DefaultHasher;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user