#frame #beginner #gui-applications #simple #http #http-response #request-response

aphrora

用Rust开发的一个简单服务器框架,也可以用于构建Rust应用程序的Web页面GUI

3个不稳定版本

0.2.0 2020年11月20日
0.1.1 2020年11月15日
0.1.0 2020年11月14日

#480HTTP服务器

自定义许可

18KB
159

AphroraImage

阿普罗拉

0.2.0版本的README.md

阅读其他语言


简介

阿普罗拉是用Rust编程语言开发的一个简单服务器框架。它只是一个玩具服务器,不够强大以构建真正的Web服务器,但它易于使用,特别是对于Rust的初学者。通过导入aphrora,你可以仅使用处理请求的闭包来建立一个简单的服务器,并且它将在浏览器中自动显示主页。

阿普罗拉不仅是一个构建简单浏览器的解决方案,你还可以使用它通过Web页面和HTTP通信为你的Rust应用程序创建GUI。


如何使用

以下是一些如何使用此框架的示例。

Hello World

首先,你需要将aphrora添加到你的Cargo.toml依赖项中

# file: Cargo.toml
# -- snip --
[dependencies]
aphrora = "0.2.0"

构建cargo build之后,你可以在应用程序中将aphrora作为一个模型来使用。

以下是一个如何使用它的示例

use aphrora::http::{Request, Response, RequestMethod, ResponseStatus};
use aphrora::run_server;

fn main() {
    run_server(|request| {
        println!("view of request: {}", request.view);
        Response{
            status: ResponseStatus::OK,
            message: String::from("hello"),
        }
    });
}

aphrora::http是一个包含一些基本structenum的模型。你可以使用它们将响应和请求作为对象来处理,而不是String

启动服务器时,你只需要像示例中那样调用带有闭包的run_server()函数。将有一个包含http请求中结构化信息的http::Request对象,并且你的代码应该返回一个http::Response对象。

在这个例子中,当您访问任何视图时,代码会返回一个 hello 到您的浏览器,正如您可以在浏览器网页中看到一行 hello。您还可以将 hello 替换为从 example.html 文件中读取的字符串,然后它将在浏览器网页中显示该文件。

服务器中必须有各种功能,所以您应该使用类似 match 表达式的某种东西来处理。您可以匹配 Requestview 属性,然后调用某个函数来处理它。

启用文件

自版本 0.2.0 以来,此框架提供了 file.rs 模块,这使得处理文件更加方便。通过调用 aphrora::file::try_under_root(),您可以从某个根路径下尝试读取文件。

use aphrora::{
    http::Response,
    run_server,
    file::try_under_root,
};

const ROOT_PATH: &str = "d:/you/can/also/use/relative/path";

fn main() {
    run_server(|request| {
        match request.view_str() {
            // means might be sth error here.
            "" => Response::void_404(),

            "/" => {
                match try_under_root(ROOT_PATH, "/index.html") {
                    Option::None => Response::void_404(),
                    Option::Some(file_string) => Response::ok(
                        file_string
                    ),
                }
            },

            _ => {
                match try_under_root(ROOT_PATH, request.view_str()) {
                    Option::None => Response::void_404(),
                    Option::Some(file_string) => Response::ok(
                        file_string
                    ),
                }
            }
        }
    });
}

这些代码将使您能够在浏览器中访问本地页面(文件)。

/ 是主页或索引页所在的位置,此 file::try_under_root() 函数通常在 _ 分支的 match 表达式中调用。


关于结构

这里是一些在 aphrora::http 中的源代码,通过这些代码您可以更好地了解数据结构。

pub struct Request {
    pub method: RequestMethod,
    pub view: String,
    pub message: String,
}
pub enum RequestMethod {
    GET,
    POST,
    Unsupported,
}
pub struct Response {
    pub status: ResponseStatus,
    pub message: String,
}
pub enum ResponseStatus {
    OK,
    NotFound,
    Forbidden,
    InternalServerError,
}

由于 unfinishedunder development,此crate目前不支持完整的HTTP,但它仅使用这些结构即可提供许多常用工具。

所以尽情享受吧,此项目仍在开发中,它将逐渐变得更加强大。


设置目标(即将推出版本)

版本 0.2.1

  • 更好地支持文件访问和禁止。

  • 更好的文档(rustdoc)。

  • http.rs 中添加更多常用方法。

版本 0.3.x

  • 配置系统:config.rs

    • 配置默认端口和首选端口

    • 配置主页(索引页)路径


发布说明

版本 0.2.0

  • 支持获取文件。

  • 通过几个常用方法改进 http.rs

  • 添加更多文档(然而,仍然不够)

版本 0.1.1

  • 添加基本注释以使开发者更加方便。

  • 初始化国际支持框架。

  • 开始中文(简体)翻译。

版本 0.1.0

  • 构建基本结构。

  • 初始化基本结构并可供使用。

无运行时依赖