14个稳定版本
1.2.0 | 2024年1月1日 |
---|---|
1.1.11 | 2023年12月29日 |
1.1.5 | 2023年11月19日 |
在网络编程
每月下载量 26
用于 2 crates
45KB
1K SLoC
WHDP - 超媒体协议解析器
一个库,可以将原始字符串解析为可工作的类型,反之亦然。
文档
说明
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());
}
}
或者如果您想创建一个响应,可以使用 ResponseBuilder
或 resp_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