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}