9 unstable releases (4 breaking)
new 0.5.0 | Mar 18, 2025 |
---|---|
0.4.1 | Dec 20, 2024 |
0.4.0 | Oct 31, 2024 |
0.3.1 | Jul 19, 2024 |
0.1.1 | Nov 20, 2023 |
#583 in HTTP server
220 downloads per month
16KB
202 lines
http-whatever
A Thread-safe version of snafu::Whatever
,
which also allows for structured message strings giving HTTP status code and application
domain qualifiers, and allows an Error to be turned into an http::Response
.
I fully admit that this flies in the face of "type-oriented" error handling, but I really do feel that that is overkill for most HTTP applications where one error (or one error chain) is the most you will get out of any request/response cycle, and the goals are simply:
a. Tell the user what went wrong with a standard HTTP status and message, and b. Log the error (chain) for further investigation if necessary
To that end, this allows you to use the "whatever..." context features from
snafu
while still categorizing your errors and avoiding the boilerplate
of creating error HTTP responses from those errors.
Features
The non-default feature serde_errors
makes HttpWhatever
compatible with Serde
serilzer and deserializer errors.
Examples
Basic use ala 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")?
}
Using the macro
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"))?
}
Dependencies
~0.9–1.5MB
~29K SLoC