14个版本

0.2.1 2024年8月20日
0.2.0 2024年3月23日
0.2.0-alpha.32023年12月7日
0.2.0-alpha.22023年11月18日
0.1.2 2021年11月3日

#41 in HTTP客户端

Download history 302/week @ 2024-05-03 255/week @ 2024-05-10 321/week @ 2024-05-17 202/week @ 2024-05-24 177/week @ 2024-05-31 155/week @ 2024-06-07 305/week @ 2024-06-14 218/week @ 2024-06-21 159/week @ 2024-06-28 110/week @ 2024-07-05 241/week @ 2024-07-12 180/week @ 2024-07-19 294/week @ 2024-07-26 148/week @ 2024-08-02 164/week @ 2024-08-09 420/week @ 2024-08-16

1,061 每月下载量
用于 5 crates

MIT/Apache

135KB
3K SLoC

OxHTTP

actions status Latest Version Released API docs

OxHTTP是Rust中HTTP 1.1的简单直接同步实现。它提供客户端和服务器。它不旨在成为所有情况下都能正常工作的HTTP实现,而是一个简单实现,用于简单场景。

客户端

OxHTTP提供了一个客户端。它的目标是遵循Web Fetch标准的基本概念,而不涉及特定于网络浏览器的部分(上下文、CORS...)。

HTTPS默认禁用,可通过以下功能启用:

示例

use oxhttp::Client;
use oxhttp::model::{Request, Method, Status, HeaderName};
use std::io::Read;

let client = Client::new();
let response = client.request(Request::builder(Method::GET, "http://example.com".parse().unwrap()).build()).unwrap();
assert_eq!(response.status(), Status::OK);
assert_eq!(response.header(&HeaderName::CONTENT_TYPE).unwrap().as_ref(), b"text/html; charset=UTF-8");

let body = response.into_body().to_string().unwrap();

服务器

OxHTTP提供了一个线程化的HTTP服务器。它仍在开发中。请在反向代理后面使用,自行承担风险!

示例

use std::net::{Ipv4Addr, Ipv6Addr};
use oxhttp::Server;
use oxhttp::model::{Response, Status};
use std::time::Duration;

// Builds a new server that returns a 404 everywhere except for "/" where it returns the body 'home'
let mut server = Server::new( | request| {
if request.url().path() == "/" {
Response::builder(Status::OK).with_body("home")
} else {
Response::builder(Status::NOT_FOUND).build()
}
});
// We bind the server to localhost on both IPv4 and v6
server = server.bind((Ipv4Addr::LOCALHOST, 8080)).bind((Ipv6Addr::LOCALHOST, 8080));
// Raise a timeout error if the client does not respond after 10s.
server = server.with_global_timeout(Duration::from_secs(10));
// Limits the max number of concurrent connections to 128.
server = server.with_max_concurrent_connections(128);
// We spawn the server and block on it
server.spawn().unwrap().join().unwrap();

许可证

本项目采用以下任一许可证:

  • Apache License, Version 2.0, (LICENSE-APACHE<http://www.apache.org/licenses/LICENSE-2.0>)
  • MIT许可证 (LICENSE-MIT<http://opensource.org/licenses/MIT>)

任选其一。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义的,您提交给OxHTTP的任何有意包含的贡献,应如上所述双重许可,不附加任何额外条款或条件。

依赖项

~1–19MB
~396K SLoC