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 = "No host found in request"]
71 pub struct FailedToResolveHost;
74}
75
76define_rejection! {
77 #[status = BAD_REQUEST]
78 #[body = "Failed to deserialize form"]
79 pub struct FailedToDeserializeForm(Error);
82}
83
84define_rejection! {
85 #[status = UNPROCESSABLE_ENTITY]
86 #[body = "Failed to deserialize form body"]
87 pub struct FailedToDeserializeFormBody(Error);
90}
91
92define_rejection! {
93 #[status = BAD_REQUEST]
94 #[body = "Failed to deserialize query string"]
95 pub struct FailedToDeserializeQueryString(Error);
98}
99
100composite_rejection! {
101 pub enum QueryRejection {
106 FailedToDeserializeQueryString,
107 }
108}
109
110composite_rejection! {
111 pub enum FormRejection {
116 InvalidFormContentType,
117 FailedToDeserializeForm,
118 FailedToDeserializeFormBody,
119 BytesRejection,
120 }
121}
122
123composite_rejection! {
124 pub enum RawFormRejection {
129 InvalidFormContentType,
130 BytesRejection,
131 }
132}
133
134#[cfg(feature = "json")]
135composite_rejection! {
136 #[cfg_attr(docsrs, doc(cfg(feature = "json")))]
141 pub enum JsonRejection {
142 JsonDataError,
143 JsonSyntaxError,
144 MissingJsonContentType,
145 BytesRejection,
146 }
147}
148
149composite_rejection! {
150 pub enum ExtensionRejection {
155 MissingExtension,
156 }
157}
158
159composite_rejection! {
160 pub enum PathRejection {
165 FailedToDeserializePathParams,
166 MissingPathParams,
167 }
168}
169
170composite_rejection! {
171 pub enum RawPathParamsRejection {
176 InvalidUtf8InPathParam,
177 MissingPathParams,
178 }
179}
180
181composite_rejection! {
182 pub enum HostRejection {
187 FailedToResolveHost,
188 }
189}
190
191#[cfg(feature = "matched-path")]
192define_rejection! {
193 #[status = INTERNAL_SERVER_ERROR]
194 #[body = "No matched path found"]
195 #[cfg_attr(docsrs, doc(cfg(feature = "matched-path")))]
199 pub struct MatchedPathMissing;
200}
201
202#[cfg(feature = "matched-path")]
203composite_rejection! {
204 #[cfg_attr(docsrs, doc(cfg(feature = "matched-path")))]
206 pub enum MatchedPathRejection {
207 MatchedPathMissing,
208 }
209}
210
211define_rejection! {
212 #[status = INTERNAL_SERVER_ERROR]
213 #[body = "The matched route is not nested"]
214 pub struct NestedPathRejection;
218}