52 releases (29 breaking)
0.58.0 | Dec 18, 2023 |
---|---|
0.57.0 | Jul 4, 2023 |
0.56.0 | Nov 25, 2022 |
0.53.0 | Jun 28, 2022 |
0.1.2 | Jul 11, 2017 |
#216 in Web programming
6,926 downloads per month
Used in 22 crates
(9 directly)
66KB
997 lines
HTTP-API-PROBLEM
A library to create HTTP response content for APIs based on RFC7807.
Usage
Get the latest version for your Cargo.toml
from
crates.io.
Serde
HttpApiProblem
implements Serialize
and Deserialize
.
Examples
use http_api_problem::*;
let p = HttpApiProblem::new(StatusCode::UNPROCESSABLE_ENTITY)
.title("You do not have enough credit.")
.detail("Your current balance is 30, but that costs 50.")
.type_url("https://example.com/probs/out-of-credit")
.instance("/account/12345/msgs/abc");
assert_eq!(Some(StatusCode::UNPROCESSABLE_ENTITY), p.status);
assert_eq!(Some("You do not have enough credit."), p.title.as_deref());
assert_eq!(Some("Your current balance is 30, but that costs 50."), p.detail.as_deref());
assert_eq!(Some("https://example.com/probs/out-of-credit"), p.type_url.as_deref());
assert_eq!(Some("/account/12345/msgs/abc"), p.instance.as_deref());
There is also TryFrom<u16>
implemented for [StatusCode]:
use http_api_problem::*;
let p = HttpApiProblem::try_new(422).unwrap()
.title("You do not have enough credit.")
.detail("Your current balance is 30, but that costs 50.")
.type_url("https://example.com/probs/out-of-credit")
.instance("/account/12345/msgs/abc");
assert_eq!(Some(StatusCode::UNPROCESSABLE_ENTITY), p.status);
assert_eq!(Some("You do not have enough credit."), p.title.as_deref());
assert_eq!(Some("Your current balance is 30, but that costs 50."), p.detail.as_deref());
assert_eq!(Some("https://example.com/probs/out-of-credit"), p.type_url.as_deref());
assert_eq!(Some("/account/12345/msgs/abc"), p.instance.as_deref());
Features
Web Frameworks
There are multiple features to integrate with web frameworks:
axum
warp
hyper
actix-web
salvo
tide
rocket
These mainly convert the HttpApiProblem
to response types of
the frameworks and implement traits to integrate with the frameworks
error handling
ApiError
The feature api-error
enables a structure which can be
return from "api handlers" that generate responses and can be
converted into an HttpApiProblem
.
Thank you
A big "thank you" for contributions and inspirations goes to the following GitHub users:
- panicbit
- thomaseizinger
- SohumB
License
http-api-problem
is primarily distributed under the terms of both the MIT
license and the Apache License (Version 2.0).
Copyright (c) 2017 Christian Douven.
License: Apache-2.0/MIT
Dependencies
~1–36MB
~556K SLoC