} else if let Some(error) = r.find::<CorsForbidden>() {
Ok(warp::reply::with_status(
error.to_string(),
StatusCode::FORBIDDEN,
))
} else if let Some(error) = r.find::<BodyDeserializeError>() {
Ok(warp::reply::with_status(
error.to_string(),
StatusCode::UNPROCESSABLE_ENTITY,
))
} else {
Ok(warp::reply::with_status(
"Route not found".to_string(),
StatusCode::NOT_FOUND,
))
}
}
...
우리는 Warp에서 BodyDeserializeError를 가져와 Rejection에 이러한 타입의 에러가 있는지 return_error 함수에서 확인한다. 해당 에러가 있다면 에러 메시지를 String 객체로 반환하고 응답에 StatusCode를 추가한다.