如何使用一种主要途径创建多个HTML页面?

时间:2020-10-03 20:12:53

标签: javascript rust header rust-actix

我正在尝试创建一个具有多个社区供稿的网站,例如一个用于保龄球,另一个用于扑克,例如:localhost:8088 / communities / bowling和localhost:8088 / communities / poker。

我将actix用作在Rust编程语言下运行的Web服务器。

有没有一种方法,使在localhost:8088 / communities下运行的所有地址都遇到相同的Web文件,以便我只能拥有一条主要路由?

然后存储/ bowling或/ poker等附加标头,以便我可以将对相关帖子供稿的单独请求提交给服务器?调用网页时,也许可以将其他标题信息保存在javascript变量中? -和我进入/ poker一样,一个名为communityType的变量被设置为poker。我该怎么做?

因为没有任何人可以为约100个不同社区中的每个社区制作HTML页面。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我对这个板条箱不是很熟悉,但是基于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}")]这样的路由,以处理每个社区在每个社区基础上的通用路由。

编辑:

听起来,在初始化.service(communities_route)以使用App时,您还需要在主函数中包含#[get(x)]。如果直接配置服务,则还可以更好地控制路由的处理方式。

这是他们的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。看起来他们为许多不同的用例提供了一堆简洁的示例。