pub struct ApiError<E> {
pub status: u16,
pub headers: HeaderMap,
pub body: String,
pub raw_body: Vec<u8>,
pub typed: Option<E>,
pub parse_error: Option<String>,
}Expand description
Envelope for an API response we received but couldn’t (or didn’t) treat as success.
ApiError<E> is returned whenever the server actually responded — whether the
status was non-2xx, or the 2xx body failed to deserialize into the expected
type. status, headers, and raw_body preserve what the server actually
sent, while body is a convenient lossy UTF-8 rendering. typed is Some(_)
when the response body was successfully parsed into a
per-operation error type; parse_error records why parsing failed when not.
Formatting the error limits only the displayed body preview; the public
fields retain the complete response and parsing details.
Fields§
§status: u16§headers: HeaderMap§body: String§raw_body: Vec<u8>Exact response bytes before lossy UTF-8 conversion.
typed: Option<E>§parse_error: Option<String>Implementations§
Source§impl<E> ApiError<E>
impl<E> ApiError<E>
pub fn is_client_error(&self) -> bool
pub fn is_server_error(&self) -> bool
Sourcepub fn problem_details(&self) -> Option<ProblemDetails>
pub fn problem_details(&self) -> Option<ProblemDetails>
Decode the generated RFC 9457 validation-problem profile without disturbing a documented typed error.
Only the application/problem+json media type is accepted. Arbitrary
JSON error bodies are deliberately not reclassified as Problem Details.
Trait Implementations§
Source§impl<E: Debug> Error for ApiError<E>
impl<E: Debug> Error for ApiError<E>
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Auto Trait Implementations§
impl<E> Freeze for ApiError<E>where
E: Freeze,
impl<E> RefUnwindSafe for ApiError<E>where
E: RefUnwindSafe,
impl<E> Send for ApiError<E>where
E: Send,
impl<E> Sync for ApiError<E>where
E: Sync,
impl<E> Unpin for ApiError<E>where
E: Unpin,
impl<E> UnsafeUnpin for ApiError<E>where
E: UnsafeUnpin,
impl<E> UnwindSafe for ApiError<E>where
E: UnwindSafe,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.