더북(TheBook)
    } 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를 추가한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.