tiny-http, 在 Rust 中,低级HTTP服务器库

分享于 

4分钟阅读

GitHub

  繁體 雙語
Low level HTTP server in Rust
  • 源代码名称:tiny-http
  • 源代码网址:http://www.github.com/tiny-http/tiny-http
  • tiny-http源代码文档
  • tiny-http源代码下载
  • Git URL:
    git://www.github.com/tiny-http/tiny-http.git
    Git Clone代码到本地:
    git clone http://www.github.com/tiny-http/tiny-http
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/tiny-http/tiny-http
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    微型 http

    Build Statustiny_http on Crates.io

    文档

    Rust 中的小型但强大的HTTP服务器。 它的主要目标是 100%符合HTTP标准,并提供一种简单的方法来创建HTTP服务器。

    对小型http处理程序进行收费的内容?

    • 接受和管理与客户端的连接
    • 解析请求
    • 请求管道
    • 传输编码和内容编码( 还没有完全实现 )
    • 将用户输入( ( 输入输入) ) 转换为连续的UTF-8 字符串( 还没有实现
    • 范围( 还没有实现 )
    • HTTPS
    • Connection: upgrade ( 由 web sockets使用)

    小型http处理与客户端连接和数据传输和编码相关的一切。

    其他所有( 解析头。多部分数据。路由。etag。缓存控件。HTML模板。等等的值) 必须由你的代码处理。 如果你想在 Rust 中创建网站,我强烈建议使用框架而不是这个库。

    安装

    将这里文件添加到项目的Cargo.toml 文件中:

    [dependencies]tiny_http = "0.5"

    不要忘记添加外部板条箱:

    externcrate tiny_http;

    用法

    use tiny_http::{Server, Response};let server = Server::http("0.0.0.0:8000").unwrap();for request in server.incoming_requests() {
     println!("received request! method: {:?}, url: {:?}, headers: {:?}",
     request.method(),
     request.url(),
     request.headers()
     );
     let response = Response::from_string("hello world");
     request.respond(response);
    }

    速度

    微型http的设计思路是:

    • 每个客户端连接都将调度到一个线程池。 每个线程将处理一个客户端。 如果客户端连接时没有可用的线程,则创建一个新的。 长时间闲置的线程将自动死掉。
    • 如果来自同一客户端的多个请求进行流水线处理( IE。 多个请求不等待答复而发送,小的http会一次性读取,并且他们都可以通过 server.recv() 来阅读。 微型http将自动重新排列响应以便以正确的顺序发送。
    • 当请求具有大体( 当前> 1 kB ) 时,一个异常存在,请求处理程序将直接从流读取正文,然后在处理下一个请求。 微型http永远不会等待请求来读取下一个。
    • 当客户端连接发送最后的请求( 通过发送 Connection: close 标头) 时,线程将立即停止读取该客户端,即使请求还没有响应也可以回收。 套接字的读取部分也将立即关闭。
    • 对客户端请求进行延迟译码。 如果不读取请求体,它将不会被解码。

    示例

    使用的微型http示例:


    Server  HTTP  Level  RUST  低级别  
    相关文章