如何使用一个主路由创建多个 html 页面?
How to create multiple html pages using one main route?
我正在尝试创建一个包含多个社区供稿的网站,例如一个用于保龄球,另一个用于扑克:localhost:8088/communities/bowling & localhost:8088/communities/poker.
我使用 actix 作为在 Rust 编程语言下运行的网络服务器。
有没有办法让所有在 localhost:8088/communities 下运行的地址遇到相同的 web 文件,这样我就可以只有一个主路由?
然后存储额外的 header,例如 /bowling 或 /poker,这样我就可以提交对服务器的单独请求以获取相关的 post 提要?也许我可以在调用网页时将额外的 header 信息保存在 javascript 变量中? -就像我去 /poker 一样,一个名为 communityType 的变量被设置为 poker。我该怎么做?
因为任何人都不可能为大约 100 多个不同社区中的每一个制作 HTML 页面。
提前感谢您的帮助!
我对这个 crate 不是很熟悉,但是基于 docs 看起来你可以使用 #[get("/route/this/function/will/support")]
来定义路由的处理方式。假设我写得正确,这应该会回复一条小消息,告诉您使用时您所在的社区路线。
use actix_web::{get, web, App, HttpServer, Responder};
#[get("/communities/{name}")]
async fn communities_route(web::Path(name): web::Path<String>) -> impl Responder {
format!("This is the page for the {:} community!", name)
}
您还可以将其扩展为具有 #[get("/communities/{name}/forums")]
或 #[get("/communities/{name}/{file}")]
的路线,以处理所有社区在每个社区基础上的公共路线。
编辑:
听起来您在初始化 App
以使用 #[get(x)]
时还需要在主函数中包含 .service(communities_route)
。如果直接配置服务,您还可以更好地控制路由的处理方式。
这是他们 hello world example 中的一个片段。只要您访问 "/index.html"
.
以外的任何路由,它就会在服务器上打印请求
async fn index(req: HttpRequest) -> &'static str {
println!("REQ: {:?}", req);
"Hello world!"
}
App::new()
.service(web::resource("/index.html").to(|| async { "Hello world!" }))
.service(web::resource("/").to(index))
我建议在 github 上浏览他们的 examples。看起来他们有许多针对许多不同用例的简洁示例。
我正在尝试创建一个包含多个社区供稿的网站,例如一个用于保龄球,另一个用于扑克:localhost:8088/communities/bowling & localhost:8088/communities/poker.
我使用 actix 作为在 Rust 编程语言下运行的网络服务器。
有没有办法让所有在 localhost:8088/communities 下运行的地址遇到相同的 web 文件,这样我就可以只有一个主路由?
然后存储额外的 header,例如 /bowling 或 /poker,这样我就可以提交对服务器的单独请求以获取相关的 post 提要?也许我可以在调用网页时将额外的 header 信息保存在 javascript 变量中? -就像我去 /poker 一样,一个名为 communityType 的变量被设置为 poker。我该怎么做?
因为任何人都不可能为大约 100 多个不同社区中的每一个制作 HTML 页面。
提前感谢您的帮助!
我对这个 crate 不是很熟悉,但是基于 docs 看起来你可以使用 #[get("/route/this/function/will/support")]
来定义路由的处理方式。假设我写得正确,这应该会回复一条小消息,告诉您使用时您所在的社区路线。
use actix_web::{get, web, App, HttpServer, Responder};
#[get("/communities/{name}")]
async fn communities_route(web::Path(name): web::Path<String>) -> impl Responder {
format!("This is the page for the {:} community!", name)
}
您还可以将其扩展为具有 #[get("/communities/{name}/forums")]
或 #[get("/communities/{name}/{file}")]
的路线,以处理所有社区在每个社区基础上的公共路线。
编辑:
听起来您在初始化 App
以使用 #[get(x)]
时还需要在主函数中包含 .service(communities_route)
。如果直接配置服务,您还可以更好地控制路由的处理方式。
这是他们 hello world example 中的一个片段。只要您访问 "/index.html"
.
async fn index(req: HttpRequest) -> &'static str {
println!("REQ: {:?}", req);
"Hello world!"
}
App::new()
.service(web::resource("/index.html").to(|| async { "Hello world!" }))
.service(web::resource("/").to(index))
我建议在 github 上浏览他们的 examples。看起来他们有许多针对许多不同用例的简洁示例。