我已经用 actix-web 定义了一个端点,如下所示:
#[derive(Deserialize)]
struct RenderInfo {
    filename: String,
}
fn render(info: actix_web::Path<RenderInfo>) -> Result<String> {
    // ...
}
App::new()
    .middleware(middleware::Logger::Default())
    .resource("/{filename}", |r| r.get().with(render))
我遇到的问题是原始 HTML 显示在浏览器中而不是被呈现。我认为内容类型设置不正确。
我看到的大多数 actix-web 示例都用于impl Responder返回类型,但我无法弄清楚如何解决造成的类型推断问题。原因似乎与返回基于标准failure::Error类型的文件操作有关。看起来 actix_web 需要实现一个特殊的WebError来阻止错误的意外传播。对于这个特定的例子,我并不在乎,因为它更像是一个内部工具。
从actix-web 示例中,使用HttpResponse:
fn welcome(req: &HttpRequest) -> Result<HttpResponse> {
    println!("{:?}", req);
    // session
    let mut counter = 1;
    if let Some(count) = req.session().get::<i32>("counter")? {
        println!("SESSION value: {}", count);
        counter = count + 1;
    }
    // set counter to session
    req.session().set("counter", counter)?;
    // response
    Ok(HttpResponse::build(StatusCode::OK)
        .content_type("text/html; charset=utf-8")
        .body(include_str!("../static/welcome.html")))
}
| 归档时间: | 
 | 
| 查看次数: | 1674 次 | 
| 最近记录: |