From 5c8929c74839db16a2d9f8656c615e8934ac0465 Mon Sep 17 00:00:00 2001 From: hu-kai45 Date: Wed, 28 Jun 2023 15:04:44 +0800 Subject: [PATCH] =?UTF-8?q?ylong=5Fhttp=20=E8=B5=84=E6=96=99=E6=95=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: hu-kai45 --- README.md | 11 ++++- README_zh.md | 11 +++-- figures/structure.png | Bin 0 -> 17221 bytes ylong_http/Cargo.toml | 9 ++-- ylong_http/README.md | 85 ----------------------------------- ylong_http_client/Cargo.toml | 33 +++++++------- ylong_http_client/README.md | 40 ----------------- 7 files changed, 38 insertions(+), 151 deletions(-) create mode 100644 figures/structure.png delete mode 100644 ylong_http/README.md delete mode 100644 ylong_http_client/README.md diff --git a/README.md b/README.md index 42fb99c..789401b 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,16 @@ `ylong_http` has built a complete HTTP capability, supporting users to use HTTP capability to meet the needs of communication scenarios. -`ylong_http` is written in Rust. +`ylong_http` provides HTTP protocol support to the network subsystem in the +`OpenHarmony` system service layer, and through the network subsystem, helps +upper layer applications recommend HTTP communication capabilities. + +`ylong_http` is written in the Rust language to support OpenHarmony's Rust +capability. + +## Structure + +![structure](./figures/structure.png) ### ylong_http_client crate diff --git a/README_zh.md b/README_zh.md index 5b24672..0914943 100644 --- a/README_zh.md +++ b/README_zh.md @@ -4,12 +4,17 @@ ylong_http 协议栈构建了完整的 HTTP 能力,支持用户使用 HTTP 能力完成通信场景的需求。 -ylong_http 协议栈主体使用 Rust 语言编写。 +ylong_http 向 OpenHarmony 系统服务层中的网络子系统提供 HTTP 协议支持,经由网络子系统帮助上层应用建议 HTTP 通信能力。 + +ylong_http 协议栈主体使用 Rust 语言编写,为 OpenHarmony 的 Rust 能力构筑提供支持。 + +## 架构图 + +![structure](./figures/structure.png) ### ylong_http_client 库 -ylong_http_client 库支持 HTTP 客户端功能,支持用户创建 HTTP 客户端向指定 Server 发送 HTTP -请求。 +ylong_http_client 库支持 HTTP 客户端功能,支持用户创建 HTTP 客户端向指定 Server 发送 HTTP 请求。 当前 ylong_http_client 库支持的功能: diff --git a/figures/structure.png b/figures/structure.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ed6e20a20644a38b54e27f0850552d70b4dfb7 GIT binary patch literal 17221 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 KFI6>v^S=NnPapgM literal 0 HcmV?d00001 diff --git a/ylong_http/Cargo.toml b/ylong_http/Cargo.toml index 113c797..d6cb5df 100644 --- a/ylong_http/Cargo.toml +++ b/ylong_http/Cargo.toml @@ -1,11 +1,10 @@ [package] name = "ylong_http" -version = "1.9.0" -edition = "2018" -description = "HTTP implementation" -readme = "README.md" +version = "1.0.0" +edition = "2021" +description = "HTTP utility implementation" license = "Apache-2.0" -repository = "https://open.codehub.huawei.com/innersource/Ylong_Rust/ylong_rs/files?ref=master&filePath=src%2Fweb%2Fylong_http" +repository = "https://gitee.com/openharmony-sig/commonlibrary_rust_ylong_http" keywords = ["ylong", "http"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/ylong_http/README.md b/ylong_http/README.md deleted file mode 100644 index 2c0d6a6..0000000 --- a/ylong_http/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# ylong_http - -## 简介 - -ylong_http 提供了 HTTP 各个版本下的协议所需的各种基础组件和扩展组件,方便用户组织所需的 HTTP 结构。 - -ylong_http 包含以下核心功能: - -### Request 和 Response - -ylong_http 使用 `Request` 和 `Response` 结构来表示 HTTP 最基础的请求和响应: - -- `Request`:HTTP 请求,包含 `Method`、`Uri`、`Headers`、`Body` 等。 - -- `Response`:HTTP 响应,包含 `StatusCode`、`Version`、`Headers`、`Body `等。 - -用户可以使用 `Request` 和 `Response` 提供的相关方法来获取相关信息,或是自定义请求和响应。 - - - -### Body - -对于`Request`和`Response`的 Body 部分,ylong_http 提供了 `Body` trait,方便用户自定义想要的 Body 结构。 - -为了区分 Body 结构所处在同步还是异步上下文,ylong_http 声明了 `sync_impl::Body` trait 和 `async_impl::Body` trait,使用 mod 进行隔离: - -- `sync_impl::Body` :该 trait 使用同步方法,可以在同步上下文使用。 -- `async_impl::Body`:该 trait 使用异步方法,可以在异步上下文使用。 - -用户可以根据自身需要,选择合适的 `Body` trait 进行实现,也可以两种都实现。 - -ylong_http 也提供默认的 Body 结构供用户使用: - -- `EmptyBody`:空的 Body 结构。 -- `TextBody`:明文的 Body 结构,支持用户传入内存数据或是 IO 数据。 -- `ChunkBody`:分段的 Body 结构,支持用户自定义 Chunk 大小,支持传入内存数据或是 IO 数据。 -- `MimeBody`:MIME 格式的 Body 结构,支持用户使用 MIME 格式设置 Body,支持传入内存数据或是 IO 数据。 - -对应的,也提供了几种 Body 类型的读取器: - -- `TextBodyDecoder`:用于解析明文 Body。 -- `ChunkBodyDecoder`:用于解析分段 Body。 -- `MimeBodyDecoder`:用于解析 MIME 格式的 Body。 - - - -### 其他组件 - -ylong_http 提供了以下几个 HTTP 版本的相关组件: - -- HTTP/1.1:提供了 `RequestEncoder`、`ResponseDecoder` 等。 -- HTTP/2:`DynamicTable`、`StaticTable`、`FrameDecoder`、`FrameEncoder` 等。 -- HTTP/3:`FrameDecoder`、`FrameEncoder` 等。 - - - -## 编译构建 - -在 ```Cargo.toml``` 下添加依赖。添加后使用 ```cargo``` 进行编译和构建: - -```toml -[dependencies] -ylong_http = { path = "/example_path/ylong_http" } # 请使用路径依赖 -``` - - - -## 目录 - -``` -ylong_http -├── examples # ylong_http 代码示例 -├── src -│ ├── body # Body trait 定义和扩展 Body 类型。 -│ ├── h1 # HTTP/1.1 相关组件实现。 -│ ├── h2 # HTTP/2 相关组件实现。 -│ ├── h2 # HTTP/3 相关组件实现。 -│ ├── huffman # Huffman 编解码实现。 -│ ├── request # Request 定义和实现。 -│ └── response # Response 定义和实现。 -└── tests # 测试目录 -``` - - - diff --git a/ylong_http_client/Cargo.toml b/ylong_http_client/Cargo.toml index 64946a4..56cec58 100644 --- a/ylong_http_client/Cargo.toml +++ b/ylong_http_client/Cargo.toml @@ -1,17 +1,16 @@ [package] name = "ylong_http_client" -version = "1.9.0" -edition = "2018" -description = "http client" -readme = "README.md" +version = "1.0.0" +edition = "2021" +description = "Ylong HTTP Client implementation" license = "Apache-2.0" -repository = "https://open.codehub.huawei.com/innersource/Ylong_Rust/ylong_rs/files?ref=master&filePath=src%2Fweb%2Fylong_http_client" +repository = "https://gitee.com/openharmony-sig/commonlibrary_rust_ylong_http" keywords = ["ylong", "http", "client"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -ylong_http = { path = "../ylong_http", version = "1.9.0", features = ["full"] } +ylong_http = { path = "../ylong_http", features = ["full"] } libc = { version = "0.2.134", optional = true } tokio = { version = "1.20.1", features = ["io-util", "net", "rt", "rt-multi-thread", "macros", "sync", "time"], optional = true } # ylong_runtime = { path = "../runtime/ylong_runtime", features = ["net", "sync", "fs", "macros", "time"], optional = true } @@ -31,20 +30,20 @@ full = [ "tls_default", ] -sync = [] # Uses sync interfaces. -async = [] # Uses async interfaces. -http1_1 = ["ylong_http/http1_1"] # Uses HTTP/1.1. -http2 = ["ylong_http/http2"] # Uses HTTP/2. -http3 = [] # Uses HTTP/3. +sync = [] # Uses sync interfaces. +async = [] # Uses async interfaces. +http1_1 = ["ylong_http/http1_1"] # Uses HTTP/1.1. +http2 = ["ylong_http/http2"] # Uses HTTP/2. +http3 = [] # Uses HTTP/3. -tokio_base = ["tokio"] # Uses tokio runtime. -ylong_base = [] # Uses ylong runtime. +tokio_base = ["tokio"] # Uses tokio runtime. +ylong_base = [] # Uses ylong runtime. tls_default = ["c_openssl_3_0"] -__tls = [] # Not open to user, only mark to use tls for developer. -__c_openssl = ["__tls", "libc"] # Not open to user, only mark to use tls by C-openssl for developer. -c_openssl_1_1 = ["__c_openssl"] # Uses TLS by FFI of C-openssl 1.1. -c_openssl_3_0 = ["__c_openssl"] # Uses TLS by FFI of C-openssl 3.0. +__tls = [] # Not open to user, only mark to use tls for developer. +__c_openssl = ["__tls", "libc"] # Not open to user, only mark to use tls by C-openssl for developer. +c_openssl_1_1 = ["__c_openssl"] # Uses TLS by FFI of C-openssl 1.1. +c_openssl_3_0 = ["__c_openssl"] # Uses TLS by FFI of C-openssl 3.0. [[example]] name = "async_http" diff --git a/ylong_http_client/README.md b/ylong_http_client/README.md deleted file mode 100644 index 9c7e553..0000000 --- a/ylong_http_client/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# ylong_http_client - -## 简介 - -ylong_http_client 支持用户构建 HTTP 客户端,支持用户使用该客户端向服务器发送请求,接收并解析服务器返回的响应。 - -### Client - -ylong_http_client 支持用户创建同步或者异步 HTTP 客户端,用户可以使用 mod 区分两种客户端。 - -- `sync_impl::Client`:同步 HTTP 客户端,整体流程使用同步接口。 - -- `async_impl::Client`:异步 HTTP 客户端,整体流程使用异步接口。 - -不论是同步还是异步客户端,都具有相同的功能,例如:连接复用、自动重定向、自动重试、设置代理等功能。 - -ylong_http_client 创建的客户端支持以下 HTTP 版本: - -- `HTTP/1.1` - -- `HTTP/2` - -- `HTTP/3` - -### Request 和 Response - -ylong_http_client 使用 ylong_http 库提供的 `Request` 结构,支持用户自定义请求内容。 - -在使用客户端发送完请求后,接收到的响应会以 ylong_http 库提供的 `Response` + `HttpBody` 的结构返回。 - -用户可以使用 `Response` 提供的接口来获取请求信息,并且可以使用 ylong_http 提供的 `Body` trait 读取响应的内容。用户也可以使用 ylong_http_client 提供的 `BodyReader` 读取内容。 - -## 编译构建 - -在 ```Cargo.toml``` 下添加依赖。添加后使用 ```cargo``` 进行编译和构建: - -```toml -[dependencies] -ylong_http_client = { path = "/example_path/ylong_http_client" } # 请使用路径依赖 -``` \ No newline at end of file -- Gitee