>

Hyper의 hyper::header::Headers#get get_raw 를 사용하는 대신 방법 &str 와 .

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

  • 답변 # 1

    hyper::header::Headers 를 파고  소스 코드, 코드를 생성하는 깔끔한 매크로가 있음을 발견했습니다 : header! . 하지만 유용하게 사용하려면 약간의 주문이 필요합니다.

    #[macro_use]
    extern crate hyper;
    use hyper::{Body, Method, Request, Response};
    use std::fmt::{self, Display};
    use std::str::FromStr;
    use std::num::ParseIntError;
    // For a header that looks like this:
    //    x-arbitrary-header-with-an-integer: 8
    #[derive(Clone, Debug, Eq, PartialEq)]
    pub struct ArbitraryNumber(i8);
    impl Display for ArbitraryNumber {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            write!(f, "Arbitrary Protocol v{}", self.0)
        }
    }
    impl FromStr for ArbitraryNumber {
        type Err = ParseIntError;
        fn from_str(s: &str) -> Result<Self, Self::Err> {
            s.parse::<i8>().map(|int| ArbitraryNumber(int))
        }
    }
    //impl Header for ArbitraryNumberHeader
    header! { (ArbitraryNumberHeader, "x-arbitrary-header-with-an-integer") => [ArbitraryNumber] }
    
    

    Response 를 받으면  이름이 res  범위 내에서 다음과 같이이 헤더에 액세스 할 수 있습니다.

    let arbitrary_header: AribitraryNumber = res.headers().get::<ArbitraryNumberHeader>().unwrap();
    
    

관련 자료

  • 이전 knockout.js - 익스텐더를 동적으로 리 바인드해도 뷰가 업데이트되지 않습니다
  • 다음 internet explorer - IE의 JSP 페이지가 POST 매개 변수를 수신하지 않습니다 Chrome에서 작동