gpt4 book ai didi

rust - 如何在 WebAssembly 中使用 web-sys 发出带有 JSON 正文的 POST 请求?

转载 作者:行者123 更新时间:2023-12-03 08:05:22 25 4
gpt4 key购买 nike

如何在 WebAssembly 中使用 web-sys 创建带有 JSON 正文的 POST 请求?

下面这个例子展示了如何发出 GET 请求,我需要将 opts.method("GET"); 更改为 opts.method("POST");但我如何将 JSON 主体传递给请求。

    let mut opts = RequestInit::new();
opts.method("GET");
opts.credentials(web_sys::RequestCredentials::Include);

let request = Request::new_with_str_and_init(
"http://localhost:8080/api/v1/books",
&opts
).unwrap();

match web_sys::window() {
Some(window) => {
let _res = JsFuture::from(window.fetch_with_request(&request))
.await
.map(|err| web_sys::console::log_1(&format!("{:?}", err)
.into()));
},
None => web_sys::console::log_1(&format!("window is none").into()),
}

最佳答案

您可以使用 RequestInit::body() 设置正文以及使用 Headers::set 所需的 header 。您必须通过 Option<JsValue>RequestInit::body() 。要传递字符串,您可以执行以下操作:

let mut opts = RequestInit::new();
opts.method("POST");
opts.body(Some(wasm_bindgen::JsValue::from_str("[1, 2, 3]")));
opts.credentials(web_sys::RequestCredentials::Include);

let request = Request::new_with_str_and_init(
"http://localhost:8080/api/v1/books",
&opts
).unwrap();

request.headers().set("content-type", "application/json");

// send the request

要发送更复杂的对象,您可以使用 serde 和 JsValue::from_serde .

关于rust - 如何在 WebAssembly 中使用 web-sys 发出带有 JSON 正文的 POST 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72521659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com