Как получить (двоичную) полезную нагрузку из actix_web :: HttpRequest - PullRequest
1 голос
/ 21 октября 2019

Я пишу веб-API в Rust. Я отправляю Unit8Array из JavaScript с помощью XMLHttpRequest, и мне нужно прочитать их на сервере как байты.

Объявление метода моего обслуживания:

pub fn user_login_bin(mut req: HttpRequest) {
 println!("{:?}", req);
 let mut stream = req.take_payload().take();

 // error label: method not found in `actix_http::payload::Payload<()>`
 let item = stream.poll().unwrap(); 

 println!("{:?}", item);

 HttpResponse::Ok().into()
}

Как я могу прочитать Vec из actix_web ::Полезная нагрузка HttpRequest?

Я попробовал пример кода, но он тоже не работает:

 req.take_payload()
    // error label: method (fold) not found in `actix_http::payload::Payload<()>`
    .fold(BytesMut::new(), move |mut body, chunk| {
        body.extend_from_slice(&chunk);
        Ok::<_, Error>(body)
    })
    .and_then(|bytes| {
        println!("request body: {:?}", bytes);
    });

1 Ответ

0 голосов
/ 21 октября 2019

Байт экстрактор работает нормально

pub fn user_login_bin(req: HttpRequest, body: Bytes) -> HttpResponse {
   println!("{:?}", req);
   println!("{:?}", body);

   HttpResponse::Ok().into()
}
...