let routes = get_questions
.or(add_question)
.with(cors)
.recover(return_error);
warp::serve(routes).run(([127, 0, 0, 1], 3030)).await;
}
➊ 새로운 변수를 만들어 warp::post로 HTTP POST 요청에 대한 필터를 만든다.
➋ 아직은 동일한 최상위 경로 /questions에서 요청을 받는다.
➌ 경로 정의를 마친다.
➍ 이 경로에 저장소를 추가해서 나중에 경로 핸들러에 전달한다.
➎ 내용을 JSON으로 추출한다. 추출한 내용은 매개변수로 추가된다.
➏ 저장소와 추출한 json 값으로 add_question을 실행한다.
경로 변수에 새로운 경로 두 개를 추가했다. Not Found 경로로 끝나기 전에 다른 경로로 전달하기 위해 get_questions 필터 끝에 있던 recover를 삭제하고 경로 끝에 추가했다는 점에 주의한다. 다음과 같이 curl로 테스트하면 add_question 경로 핸들러가 실패하는 것을 확인할 수 있다(의도적으로 JSON에 id 항목을 빼고 넣었다).