axum/extract/
rejection.rs1use axum_core::__composite_rejection as composite_rejection;
4use axum_core::__define_rejection as define_rejection;
5
6pub use crate::extract::path::{FailedToDeserializePathParams, InvalidUtf8InPathParam};
7pub use axum_core::extract::rejection::*;
8
9#[cfg(feature = "json")]
10define_rejection! {
11    #[status = UNPROCESSABLE_ENTITY]
12    #[body = "Failed to deserialize the JSON body into the target type"]
13    #[cfg_attr(docsrs, doc(cfg(feature = "json")))]
14    pub struct JsonDataError(Error);
19}
20
21#[cfg(feature = "json")]
22define_rejection! {
23    #[status = BAD_REQUEST]
24    #[body = "Failed to parse the request body as JSON"]
25    #[cfg_attr(docsrs, doc(cfg(feature = "json")))]
26    pub struct JsonSyntaxError(Error);
30}
31
32#[cfg(feature = "json")]
33define_rejection! {
34    #[status = UNSUPPORTED_MEDIA_TYPE]
35    #[body = "Expected request with `Content-Type: application/json`"]
36    #[cfg_attr(docsrs, doc(cfg(feature = "json")))]
37    pub struct MissingJsonContentType;
40}
41
42define_rejection! {
43    #[status = INTERNAL_SERVER_ERROR]
44    #[body = "Missing request extension"]
45    pub struct MissingExtension(Error);
48}
49
50define_rejection! {
51    #[status = INTERNAL_SERVER_ERROR]
52    #[body = "No paths parameters found for matched route"]
53    pub struct MissingPathParams;
57}
58
59define_rejection! {
60    #[status = UNSUPPORTED_MEDIA_TYPE]
61    #[body = "Form requests must have `Content-Type: application/x-www-form-urlencoded`"]
62    pub struct InvalidFormContentType;
66}
67
68define_rejection! {
69    #[status = BAD_REQUEST]
70    #[body = "Failed to deserialize form"]
71    pub struct FailedToDeserializeForm(Error);
74}
75
76define_rejection! {
77    #[status = UNPROCESSABLE_ENTITY]
78    #[body = "Failed to deserialize form body"]
79    pub struct FailedToDeserializeFormBody(Error);
82}
83
84define_rejection! {
85    #[status = BAD_REQUEST]
86    #[body = "Failed to deserialize query string"]
87    pub struct FailedToDeserializeQueryString(Error);
90}
91
92composite_rejection! {
93    pub enum QueryRejection {
98        FailedToDeserializeQueryString,
99    }
100}
101
102composite_rejection! {
103    pub enum FormRejection {
108        InvalidFormContentType,
109        FailedToDeserializeForm,
110        FailedToDeserializeFormBody,
111        BytesRejection,
112    }
113}
114
115composite_rejection! {
116    pub enum RawFormRejection {
121        InvalidFormContentType,
122        BytesRejection,
123    }
124}
125
126#[cfg(feature = "json")]
127composite_rejection! {
128    #[cfg_attr(docsrs, doc(cfg(feature = "json")))]
133    pub enum JsonRejection {
134        JsonDataError,
135        JsonSyntaxError,
136        MissingJsonContentType,
137        BytesRejection,
138    }
139}
140
141composite_rejection! {
142    pub enum ExtensionRejection {
147        MissingExtension,
148    }
149}
150
151composite_rejection! {
152    pub enum PathRejection {
157        FailedToDeserializePathParams,
158        MissingPathParams,
159    }
160}
161
162composite_rejection! {
163    pub enum RawPathParamsRejection {
168        InvalidUtf8InPathParam,
169        MissingPathParams,
170    }
171}
172
173#[cfg(feature = "matched-path")]
174define_rejection! {
175    #[status = INTERNAL_SERVER_ERROR]
176    #[body = "No matched path found"]
177    #[cfg_attr(docsrs, doc(cfg(feature = "matched-path")))]
181    pub struct MatchedPathMissing;
182}
183
184#[cfg(feature = "matched-path")]
185composite_rejection! {
186    #[cfg_attr(docsrs, doc(cfg(feature = "matched-path")))]
188    pub enum MatchedPathRejection {
189        MatchedPathMissing,
190    }
191}
192
193define_rejection! {
194    #[status = INTERNAL_SERVER_ERROR]
195    #[body = "The matched route is not nested"]
196    pub struct NestedPathRejection;
200}