7 个版本

0.0.8 2024 年 3 月 11 日
0.0.7 2023 年 3 月 20 日
0.0.6 2022 年 7 月 11 日
0.0.5 2021 年 11 月 13 日
0.0.1 2020 年 11 月 15 日

HTTP 服务器 中排名 475

Download history 52/week @ 2024-03-31 2/week @ 2024-04-07

每月下载量 187

Apache-2.0

29KB
554 行代码(不包括注释)


⚠️ 此 crate 仍处于 alpha 阶段。API 可能会更改。 ⚠️

gotham_formdata ✍️


此 crate 是对流行的 gotham Web 框架 的扩展,用于 Rust。它旨在减少读取请求体所需的开销,直到 gotham 最终实现 body 提取器

✨ 功能

  • 解析 application/x-www-form-urlencoded 请求体
  • 解析 multipart/form-data 请求体
  • 验证解析的请求体
  • #![forbid)] 确保所有功能都在 100% 安全的 Rust 代码中实现

⚠️ 注意

此 crate 是异步的,但尚未强制执行上传限制。 您负责强制执行上传限制。

🗒️ 示例

use gotham_formdata::FormData;
use validator::Validate;

#[derive(FormData, Validate)]
struct LoginData {
	#[validate(length(min = 5, max = 16))]
	username: String,
	#[validate(length(min = 8))]
	password: String
}

async fn login_handler(state: &mut State) -> Result<Response<Body>, HandlerError> {
	let login_data: LoginData = FormData::parse_form_data(state).await?;
	Ok(if login_data.password == "secret" {
		create_response(state, StatusCode::OK, TEXT_PLAIN, login_data.username)
	} else {
		create_empty_response(state, StatusCode::FORBIDDEN)
	})
}

🏷️ 版本控制

与所有 Rust crate 一样,此 crate 将遵循语义版本控制指南。但是,更改 MSRV(最低支持的 Rust 版本)不被视为破坏性更改。

📃 许可证

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

	https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

依赖项

~16–28MB
~490K SLoC