6个版本
0.3.1 | 2024年7月19日 |
---|---|
0.3.0 | 2024年1月10日 |
0.2.1 | 2023年12月14日 |
0.1.1 | 2023年11月20日 |
#321 在 HTTP服务器
270 每月下载量
14KB
142 行
http-whatever
是snafu::Whatever
的线程安全版本,它还允许使用结构化消息字符串提供HTTP状态代码和应用域限定符,并允许将错误转换为http::Response
。
我完全承认这与“面向类型”的错误处理背道而驰,但我觉得这对于大多数HTTP应用程序来说有点过度,因为大多数HTTP应用程序中,一次(或一个错误链)请求/响应周期中最多只会出现一个错误,目标仅仅是
a. 用标准的HTTP状态和消息告诉用户发生了什么错误,b. 如有必要,记录错误(链)以进行进一步调查
为此,这个库允许你使用snafu
的“whatever...”上下文功能,同时仍然可以分类你的错误,避免从错误中创建HTTP响应的样板代码。
示例
类似于snafu::Whatever的基本使用。
use http_whatever::prelude::*;
fn parse_uint(uint_as_str: &str) -> Result<usize, HttpWhatever> {
uint_as_str.parse().whatever_context("400:RequestContent:Bad value")?
}
使用宏
use http_whatever::prelude::*;
fn parse_uint(uint_as_str: &str) -> Result<usize, HttpWhatever> {
uint_as_str.parse().whatever_context(http_err!(400,uint_as_str,"Bad input"))?
}
依赖项
~1–1.5MB
~30K SLoC