6 个版本

0.1.0 2024年2月19日
0.0.6 2024年3月2日
0.0.5 2024年2月25日

#682 in HTTP 服务器

Download history 1/week @ 2024-05-28 3/week @ 2024-06-04 17/week @ 2024-07-02 190/week @ 2024-07-30

190 每月下载量

MIT 许可证

15KB
274

Arkyo

Arkyo 是一个用 Rust 编写的简单 HTTP 服务器,旨在处理传入请求并根据定义的路由和静态文件服务能力提供适当的响应。

特性

  • HTTP 服务器: Arkyo 监听传入的 TCP 连接,解析 HTTP 请求并将它们调度到相应的处理器。
  • 路由: 使用特定的 HTTP 方法和相应的处理器函数定义路由。支持静态和动态路由。
  • 静态文件服务: 从指定的文件夹中提供静态文件。
  • 错误处理: 使用适当的 HTTP 状态码优雅地处理错误。
  • 多线程: Arkyo 通过多线程构建以同时处理多个传入连接。
  • 中间件支持: 应用中间件函数以拦截和修改传入请求或传出响应。

路线图

  • 静态内容
  • 动态路由
  • 中间件支持
  • 多表单支持

用法

  1. 定义路由: 使用 add_route 方法将路由添加到服务器实例。
    server.add_route("/example", Method::Get, handler_function);
  1. 定义中间件: 使用 add_middleware 方法将中间件添加到服务器实例。
    sever.add_middleware("/path", middleware_function)
  1. 设置静态文件夹: 可选地,使用 static_folder 方法设置一个文件夹,从该文件夹提供静态文件。
    server.static_folder("public");
  1. 启动服务器: 使用 listen 方法开始监听传入的连接。
    server.listen();

示例

    use arkyo::prelude::*;

    fn main() {
        let mut server = Server::new();
    
        // Define routes
        server.add_route("/", Method::Get, index_handler);
        server.add_route("/about", Method::Get, about_handler);
        server.add_route("/user/:id", Method::Get, user_handler);
    
        // Set static folder
        server.static_folder("/static");
    
        // Start server
        server.listen("127.0.0.1:8080");
    }
    
    fn index_handler(_: Request) -> Response {
        Response::new()
            .status(Status::Ok)
            .body("Welcome to Arkyo!")
    }
    
    fn about_handler(_: Request) -> Response {
        Response::new()
            .status(Status::Ok)
            .body("Arkyo - A simple HTTP server written in Rust.")
    }
    
    fn user_handler(req: Request) -> Response {
        let user_id = req.params.get("id").unwrap();
    
        Response::new()
            .status(Status::Ok)
            .body(format!("User profile page for user {}", user_id))
    }

安装

将 arkyo 添加到 Cargo.toml 依赖项中

    [dependencies]
    arkyo = "0.0.6"

贡献

  • 发现了一个错误?请打开一个问题。
  • 想要贡献?分叉仓库并提交拉取请求。

许可证

本项目受 MIT 许可证许可 - 请参阅 LICENSE 文件获取详细信息。

Arkyo - © 2024 DhavyLTS

依赖关系

~1MB
~18K SLoC