14个稳定版本

1.2.0 2024年1月1日
1.1.11 2023年12月29日
1.1.5 2023年11月19日

网络编程

每月下载量 26
用于 2 crates

GPL-2.0-or-later

45KB
1K SLoC

WHDP - 超媒体协议解析器

一个库,可以将原始字符串解析为可工作的类型,反之亦然。

Latest version Documentation Reliability Rating Quality Gate Status Technical Debt

文档

说明

Http是一种基于文本的协议。它遵循一个非常简单的格式

请求

Method Request-URI HTTP-Version CRLF
headers CRLF
message-body

响应

HTTP-Version Status-Code Reason-Phrase CRLF
headers CRLF
message-body

用法

将库导入到您的Cargo.toml中

[dependencies]
whdp = "1.2.0"

然后只需使用 TryRequest trait 将其解析为 Request

use std::io::Write;
use std::net::TcpListener;

use whdp::{Response, TryRequest};

fn main() {
    let server = TcpListener::bind("0.0.0.0:8080").unwrap();
    let mut resp = Response::default();
    for inco in server.incoming() {
        let mut inco = inco.unwrap();
        println!("{}", inco.try_to_request().unwrap()); // don't unwrap immediatly first look if there is an error
        let _ = inco.write_all(resp.to_string().as_bytes());
    }
}

或者如果您想创建一个响应,可以使用 ResponseBuilderresp_presets 模块


use std::io::Write;
use std::net::TcpListener;

use whdp::{HttpVersion, ResponseBuilder};
use whdp::presets::ok;

fn main() {
    let server = TcpListener::bind("0.0.0.0:8080").unwrap();
    let resp = ResponseBuilder::new()
        .with_body("Hello, World".into())
        .with_status(ok())
        .with_version(HttpVersion::OnePointOne)
        .with_empty_headers()
        .build().unwrap();
    for inco in server.incoming() {
        let mut inco = inco.unwrap();
        let _ = inco.write_all(resp.to_string().as_bytes());
    }
}

依赖关系

~53KB