더북(TheBook)

4.3.2 url-form-encoded로 answers 추가하기

먼저 새로운 구조체 Answer를 추가해 시스템에서 답변이 어떻게 보여야 하는지에 대한 요구 사항을 지정한다. 또한, Store에 새로운 answers 구조체를 추가한다. answers 구조체는 질문 속성과 동일한 서명을 가진다. 답변을 저장하기 위한 HashMap을 읽기-쓰기 잠금(RwLock)으로 래핑하여 데이터 무결성을 보장하고, 스레드 간에 구조를 전달할 수 있도록 Arc로 래핑한다.

이전 절에서 HTTP 내용에서 키-값 쌍을 전달 받았다. 러스트에서는 키와 값을 String으로 갖는 HashMap이다. 다음 코드는 Answer 구조체를 만들고, 저장소에 추가하고, add_answer 경로 핸들러를 구현한 것이다.

코드 4-38 프로젝트에 answers 추가하기

...
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Hash)]
struct AnswerId(String);

#[derive(Serialize, Deserialize, Debug, Clone)]
struct Answer {
    id: AnswerId,
    content: String,
    question_id: QuestionId,
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.