#http-error #http-status #http #whatever #snafu #http-response

http-whatever

一个线程安全的snafu::Whatever用于HTTP错误

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日

#321HTTP服务器

Download history 6/week @ 2024-06-29 6/week @ 2024-07-06 76/week @ 2024-07-13 76/week @ 2024-07-20 48/week @ 2024-07-27 65/week @ 2024-08-03 5/week @ 2024-08-10

270 每月下载量

Apache-2.0

14KB
142

http-whatever

CI

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