더북(TheBook)

4.2.4 잘못된 요청 처리하기

HTTP POST 또는 PUT 요청 내용에서 JSON을 파싱할 때 엄격한 타입 검사를 가진 프로그래밍 언어의 장점을 확인할 수 있다. 내용의 유효성을 자동으로 검사하기 때문에 우리가 해야 할 일은 return_error 메서드에서 BodyDeserializeError를 확인해 적절한 에러를 클라이언트에 다시 반환하기만 하면 된다.

코드 4-35 PUT 요청 내용에서 질문을 읽지 못할 때 에러 추가하기

...
use warp::{
    filters::{body::BodyDeserializeError, cors::CorsForbidden},
    http::Method,
    http::StatusCode,
    reject::Reject,
    Filter, Rejection, Reply,
};

async fn return_error(r: Rejection) -> Result<impl Reply, Rejection> {
    if let Some(error) = r.find::<Error>() {
        Ok(warp::reply::with_status(
            error.to_string(),
            StatusCode::RANGE_NOT_SATISFIABLE,
        ))
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.