pub struct ApiErrorBuilder { /* private fields */ }Expand description
A builder for constructing ApiError instances.
This builder provides a fluent interface for creating ApiError instances with
optional fields. The status, title, and detail fields are required and must
be set before calling build().
§Example
use axum::http::StatusCode;
use axum_anyhow::ApiError;
use anyhow::anyhow;
let error = ApiError::builder()
.status(StatusCode::INTERNAL_SERVER_ERROR)
.title("Database Error")
.detail("Failed to connect to the database")
.error(anyhow!("Connection timeout"))
.build();Implementations§
Source§impl ApiErrorBuilder
impl ApiErrorBuilder
Sourcepub fn status(self, status: StatusCode) -> Self
pub fn status(self, status: StatusCode) -> Self
Sets the HTTP status code for the error.
§Example
use axum::http::StatusCode;
use axum_anyhow::ApiError;
let error = ApiError::builder()
.status(StatusCode::NOT_FOUND)
.title("Not Found")
.detail("Resource not found")
.build();Sourcepub fn title(self, title: impl Into<String>) -> Self
pub fn title(self, title: impl Into<String>) -> Self
Sets the title for the error.
§Example
use axum::http::StatusCode;
use axum_anyhow::ApiError;
let error = ApiError::builder()
.status(StatusCode::BAD_REQUEST)
.title("Invalid Input")
.detail("The provided email is invalid")
.build();Sourcepub fn detail(self, detail: impl Into<String>) -> Self
pub fn detail(self, detail: impl Into<String>) -> Self
Sets the detail message for the error.
§Example
use axum::http::StatusCode;
use axum_anyhow::ApiError;
let error = ApiError::builder()
.status(StatusCode::FORBIDDEN)
.title("Access Denied")
.detail("You do not have permission to access this resource")
.build();Sourcepub fn error(self, error: impl Into<Error>) -> Self
pub fn error(self, error: impl Into<Error>) -> Self
Sets the underlying error that caused this API error.
§Example
use axum::http::StatusCode;
use axum_anyhow::ApiError;
use anyhow::anyhow;
let error = ApiError::builder()
.status(StatusCode::INTERNAL_SERVER_ERROR)
.title("Database Error")
.detail("Failed to execute query")
.error(anyhow!("Connection pool exhausted"))
.build();
assert_eq!(error.status, StatusCode::INTERNAL_SERVER_ERROR);
assert_eq!(error.title, "Database Error");
assert_eq!(error.detail, "Failed to execute query");
assert_eq!(error.error.unwrap().to_string(), "Connection pool exhausted");Sourcepub fn build(self) -> ApiError
pub fn build(self) -> ApiError
Builds the ApiError instance.
If status, title, or detail have not been set, they will default to:
status:StatusCode::INTERNAL_SERVER_ERRORtitle:"Internal Error"detail:"Something went wrong"
§Example
use axum::http::StatusCode;
use axum_anyhow::ApiError;
let error = ApiError::builder()
.status(StatusCode::BAD_REQUEST)
.title("Bad Request")
.detail("Invalid request parameters")
.build();
assert_eq!(error.status, StatusCode::BAD_REQUEST);
assert_eq!(error.title, "Bad Request");
assert_eq!(error.detail, "Invalid request parameters");
// Using defaults
let default_error = ApiError::builder().build();
assert_eq!(default_error.status, StatusCode::INTERNAL_SERVER_ERROR);
assert_eq!(default_error.title, "Internal Error");
assert_eq!(default_error.detail, "Something went wrong");Trait Implementations§
Source§impl Default for ApiErrorBuilder
impl Default for ApiErrorBuilder
Source§fn default() -> ApiErrorBuilder
fn default() -> ApiErrorBuilder
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for ApiErrorBuilder
impl RefUnwindSafe for ApiErrorBuilder
impl Send for ApiErrorBuilder
impl Sync for ApiErrorBuilder
impl Unpin for ApiErrorBuilder
impl UnwindSafe for ApiErrorBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more