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

问题描述

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

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

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

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

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

谢谢您的帮助!

解决方法

我对这个板条箱不是很熟悉,但是基于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。看起来他们为许多不同的用例提供了一堆简洁的示例。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...