├── ARCHIVE.md ├── LICENSE └── README.md /ARCHIVE.md: -------------------------------------------------------------------------------- 1 | ARCHIVE of "Make HTTP request from inside WebAssembly" list 2 | =========================================================== 3 | 4 | > [!CAUTION] 5 | > Approaches listed on this page are deprecated or/and do not longer work. 6 | > They are collected here for historical purposes. 7 | 8 | Each item has hyperlink to up-to-date alternative in the [main list](README.md). 9 | 10 | ### Contents 11 |
Language | 14 |Browsers and JS runtimes | 15 |Standalone / server-side / WASI runtimes | 16 |
---|---|---|
AssemblyScript | 19 |20 | | 21 | 22 | [wasi-experimental-http, wasi-http-ts](#assemblyscript-wasi) 23 | 24 | | 25 |
C# / .Net | 28 |29 | 30 | [Uno Platform](#csharp) 31 | 32 | | 33 |34 | 35 | [wasi-experimental-http](#csharp-wasi) 36 | 37 | | 38 |
C / C++ | 41 |42 | 43 | 44 | 45 | | 46 |47 | 48 | [wasi-experimental-http](#cpp-wasi) 49 | 50 | | 51 |
Golang / TinyGo | 54 |55 | | 56 | 57 | [wasi-experimental-http](#golang-wasi) 58 | 59 | | 60 |
PHP | 63 |64 | 65 | [PIB aka php-wasm](#php) 66 | 67 | | 68 |69 | |
Python | 72 |73 | 74 | [requests-wasm-polyfill](#python) 75 | 76 | | 77 |78 | |
Rust | 81 |82 | | 83 | 84 | [wasi-experimental-http](#rust-wasi) 85 | 86 | | 87 |
Zig | 90 |91 | | 92 | 93 | [wasi-experimental-http](#zig-wasi) 94 | 95 | | 96 |
Product / Implementation | TLDR: Usage | TLDR: Example code | 107 |Doc | 108 |Online demo | 109 |WASM Runtime | Internals: method to do real request |
---|---|---|---|---|---|---|
112 | 113 | [Uno Platform](https://platform.uno/) 114 | 115 | > [!CAUTION] 116 | > `Uno.UI.Wasm. WasmHttpHandler` deprecated since .NET 6 117 | 118 | 119 | > [!TIP] 120 | > [Use](README.md#uno-platform) `System.Net. Http.HttpClient` instead. 121 | 122 | | 123 |124 | 125 | ```csharp 126 | // Uno Platform's own way 127 | // Deprecated since .NET 6, 128 | // use 'System.Net.Http.HttpClient' and 'HttpHandler' instead 129 | // See https://github.com/unoplatform/uno/issues/9665 130 | using System.Net.Http; 131 | 132 | using (var handler = new Uno.UI.Wasm.WasmHttpHandler()) 133 | using (var client = new HttpClient(handler)) 134 | { 135 | var request = new HttpRequestMessage(HttpMethod.Get, 136 | new Uri("https://httpbin.org/anything")); 137 | var response = await client.SendAsync(request); 138 | var content = await response.Content.ReadAsStringAsync(); 139 | } 140 | ``` 141 | 142 | | 143 |144 | 145 | [Test](https://github.com/unoplatform/uno/blob/4.7.37/src/SamplesApp/SamplesApp.Shared/Samples/UnitTests/HttpUnitTests.xaml.cs#L33) 146 | 147 | | 148 |149 | 150 | [Tutorial](https://platform.uno/docs/articles/howto-consume-webservices.html) 151 | 152 | | 153 |154 | 155 | [Playground](https://playground.platform.uno/) 156 | 157 | | 158 |Browser | 159 |160 | 161 | [JS Interop](https://github.com/unoplatform/uno/blob/4.7.37/src/Uno.UI.Runtime.WebAssembly/WasmHttpHandler.cs#L62) invokes the TS 162 | [wrapper](https://github.com/unoplatform/uno/blob/4.7.37/src/Uno.UI/ts/HttpClient.ts#L27) for `fetch` 163 | 164 | | 165 |
Product / Implementation | TLDR: Usage | TLDR: Example code | 171 |Doc | 172 |Online demo | 173 |WASM Runtime | Internals: method to do real request |
---|---|---|---|---|---|---|
176 | 177 | [PIB: PHP in Browser aka php-wasm](https://github.com/seanmorris/php-wasm/) 178 | 179 | > [!CAUTION] 180 | > This code does not work in php-wasm v0.0.8. 181 | 182 | 183 | > [!TIP] 184 | > Use [up-to-date method](README.md#php-wasm) instead. 185 | 186 | | 187 |
188 |
189 | ```php
190 | $js=<<
203 |
204 | [Example](https://github.com/WordPress/wordpress-playground/blob/bb148069e37d8b7f3314a3e675abb316f7749e4e/src/wordpress-playground/mu-plugins/includes/requests_transport_fetch.php#L68)
205 |
206 | |
207 |
208 |
209 | [Doc](https://github.com/seanmorris/vrzno#usage)
210 |
211 | |
212 |
213 |
214 | * [Demo](https://seanmorris.github.io/php-wasm/?autorun=0&persist=0&single-expression=0&code=%253C%253Fphp%250A%2524js%253D%253C%253C%253CJSCODE%250Avar%2520xhr%253Dnew%2520XMLHttpRequest%28%29%253B%250Axhr.open%28%27GET%27%252C%2520%27https%253A%252F%252Fhttpbin.org%252Fanything%27%252C%25200%29%253B%250Axhr.send%28%29%253B%250A%250Axhr.responseText%253B%250AJSCODE%253B%250A%250Avar_dump%28vrzno_eval%28%2524js%29%29%253B%250A)
215 | * [Playground](https://seanmorris.github.io/php-wasm/)
216 |
217 | |
218 | Browser, Node.js, and maybe Deno |
219 |
220 |
221 | Manual JS `XMLHttpRequest` interop using [`vrzno`](https://github.com/seanmorris/vrzno/blob/228514316299f8d1dbc8abcff51523ed37929f1f/vrzno.c#L36) PHP extension.
222 |
223 | |
224 | |
Product / Implementation | TLDR: Usage | TLDR: Example code | 232 |Doc | 233 |Online demo | 234 |WASM Runtime | Internals: method to do real request |
---|---|---|---|---|---|---|
237 | 238 | [requests-wasm-polyfill](https://github.com/emscripten-forge/requests-wasm-polyfill) 239 | 240 | For [pyjs](https://github.com/emscripten-forge/pyjs) 241 | 242 | > [!CAUTION] 243 | > Repo was [archived](https://github.com/emscripten-forge/requests-wasm-polyfill/issues/7) and package was [dropped from recipes](https://github.com/emscripten-forge/recipes/pull/796) on Feb 6, 2024. 244 | 245 | 246 | > [!TIP] 247 | > [Use](https://github.com/emscripten-forge/requests-wasm-polyfill/blob/568560020f74704c183fe49f8e527942d19e276c/README.md?plain=1#L8) the official `requests` instead. 248 | 249 | | 250 |251 | 252 | ```python 253 | import requests 254 | 255 | r = requests.get('https://httpbin.org/anything') 256 | result = r.text 257 | print(result) 258 | ``` 259 | 260 | | 261 |262 | 263 | [Example](https://github.com/wasm-outbound-http-examples/pyjs/blob/596d23d2dcd930ec7025eb734feaaffa478c13f5/requests-wasm-polyfill/script.js#L26) 264 | 265 | | 266 |267 | | 268 | 269 | * [Demo](https://wasm-outbound-http-examples.github.io/pyjs/requests-wasm-polyfill/) 270 | * [Dev Container](https://codespaces.new/wasm-outbound-http-examples/pyjs) 271 | 272 | | 273 |274 | 275 | Browser 276 | 277 | | 278 |279 | 280 | Direct [`XMLHttpRequest` interop](https://github.com/emscripten-forge/requests-wasm-polyfill/blob/0.3.0/requests/api.py#L41) in 281 | [sync](https://github.com/emscripten-forge/requests-wasm-polyfill/blob/0.3.0/requests/api.py#L27) mode. 282 | 283 | | 284 |
Product / Implementation | TLDR: Usage | TLDR: Example code | 297 |Doc | 298 |Online demo | 299 |WASM Runtime | Internals: method to do real request |
---|---|---|---|---|---|---|
302 | 303 | [wasi-experimental-http](https://www.npmjs.com/package/@deislabs/wasi-experimental-http) 304 | 305 | > [!CAUTION] 306 | > [Repo](https://github.com/deislabs/wasi-experimental-http) was archived on Feb 22, 2024. 307 | 308 | 309 | > [!TIP] 310 | > Use [wasi-http](README.md#assemblyscript-wasi-http) instead. 311 | 312 | | 313 |314 | 315 | ```typescript 316 | import { 317 | Method, RequestBuilder, Response 318 | } from "@deislabs/wasi-experimental-http"; 319 | import { Console } from "as-wasi/assembly"; 320 | 321 | let resp = new RequestBuilder("https://httpbin.org/anything") 322 | .header("User-Agent", "wasm32-wasi-http") 323 | .method(Method.GET) 324 | .send(); 325 | 326 | let text = String.UTF8.decode(resp.bodyReadAll().buffer); 327 | Console.log(text); 328 | ``` 329 | 330 | | 331 |332 | 333 | * [Example 1](https://github.com/dev-wasm/dev-wasm-ts/blob/a7eb8737aa12b87f55c60acd6d3dd8be0c9d8508/http/main.ts#L15) 334 | * [Example 2](https://github.com/fermyon/spin-kitchensink/blob/c0d0f2b0487df0cb9f151b7dd8f7cd13f9ab1087/assemblyscript-outbound-http/index.ts#L11) _from [old](https://github.com/fermyon/spin/pull/699) Spin_ 335 | 336 | | 337 |338 | 339 | [Readme](https://github.com/dev-wasm/dev-wasm-ts/blob/a7eb8737aa12b87f55c60acd6d3dd8be0c9d8508/http/README.md#experimental-http-client-example) 340 | 341 | | 342 |343 | 344 | [Dev Container](https://github.com/codespaces/new?hide_repo_select=true&ref=wasi-experimental-http&repo=656267188) _created by brendandburns_ 345 | 346 | | 347 |348 | 349 | Wasmtime with integrated `wasi-experimental-http` crate, e.g. [brendandburns's fork](https://github.com/brendandburns/wasmtime/commit/e2a567c4ca38190a74a7eca62cf65892547f2f3b) 350 | or [**old** Spin](https://github.com/fermyon/spin/pull/699) 351 | 352 | | 353 |354 | 355 | [Importing](https://github.com/dev-wasm/dev-wasm-ts/blob/a7eb8737aa12b87f55c60acd6d3dd8be0c9d8508/http/package.json#L18) 356 | [npm package](https://www.npmjs.com/package/@deislabs/wasi-experimental-http) which [calls](https://github.com/deislabs/wasi-experimental-http/blob/v0.5.0/crates/as/index.ts#L202) 357 | [imported](https://github.com/deislabs/wasi-experimental-http/blob/v0.5.0/crates/as/raw.ts#L113) 358 | [host function](https://github.com/deislabs/wasi-experimental-http/blob/8291baece45cc51e18e69d7d5ad39ca20744e9f9/crates/wasi-experimental-http-wasmtime/src/lib.rs#L238) implemented in [wasi-experimental-http-wasmtime](https://github.com/deislabs/wasi-experimental-http/tree/8291baece45cc51e18e69d7d5ad39ca20744e9f9/crates/wasi-experimental-http-wasmtime) Wasmtime's WASI module. 359 | 360 | | 361 |
364 | 365 | [brendandburns/wasi-http-ts](https://github.com/brendandburns/wasi-http-ts) 366 | 367 | > [!CAUTION] 368 | > [Repo](https://github.com/deislabs/wasi-experimental-http) was archived on Feb 22, 2024. 369 | 370 | 371 | > [!TIP] 372 | > Use [wasi-http](README.md#assemblyscript-wasi-http) instead. 373 | 374 | | 375 |376 | 377 | ```typescript 378 | // Identical to wasi-experimental-http currently 379 | // Needs `npm i https://github.com/brendandburns/wasi-http-ts` 380 | import { 381 | Method, RequestBuilder 382 | } from "@brendandburns/wasi-http-ts"; 383 | import { Console } from "as-wasi/assembly"; 384 | 385 | let resp = new RequestBuilder("https://httpbin.org/anything") 386 | .header("User-Agent", "wasm32-wasi-http") 387 | .method(Method.GET) 388 | .send(); 389 | 390 | let text = String.UTF8.decode(resp.bodyReadAll().buffer); 391 | Console.log(text); 392 | ``` 393 | 394 | | 395 |396 | 397 | <-- 398 | 399 | | 400 |401 | 402 | [Readme](https://github.com/dev-wasm/dev-wasm-ts/blob/a7eb8737aa12b87f55c60acd6d3dd8be0c9d8508/http/README.md#experimental-http-client-example) 403 | _from dev-wasm-ts_ 404 | 405 | | 406 |407 | 408 | Possible with 409 | [Dev Container](https://github.com/codespaces/new?hide_repo_select=true&ref=wasi-experimental-http&repo=656267188) _created by brendandburns_ 410 | 411 | | 412 |413 | 414 | Wasmtime with integrated `wasi-experimental-http` crate, e.g. [brendandburns's fork](https://github.com/brendandburns/wasmtime/commit/e2a567c4ca38190a74a7eca62cf65892547f2f3b) 415 | 416 | | 417 |418 | 419 | Using [client lib](https://github.com/brendandburns/wasi-http-ts) which [calls](https://github.com/brendandburns/wasi-http-ts/blob/1f8c7d7e48a79575df080a77fe589cf5cf2309ac/index.ts#L202) 420 | [imported](https://github.com/brendandburns/wasi-http-ts/blob/1f8c7d7e48a79575df080a77fe589cf5cf2309ac/raw.ts#L113) 421 | [host function](https://github.com/deislabs/wasi-experimental-http/blob/8291baece45cc51e18e69d7d5ad39ca20744e9f9/crates/wasi-experimental-http-wasmtime/src/lib.rs#L238) implemented in [wasi-experimental-http-wasmtime](https://github.com/deislabs/wasi-experimental-http/tree/8291baece45cc51e18e69d7d5ad39ca20744e9f9/crates/wasi-experimental-http-wasmtime) Wasmtime's WASI module. 422 | 423 | | 424 |
Product / Implementation | TLDR: Usage | TLDR: Example code | 433 |Doc | 434 |Online demo | 435 |WASM Runtime | Internals: method to do real request |
---|---|---|---|---|---|---|
438 | 439 | [wasi-experimental-http](https://crates.io/crates/wasi-experimental-http) 440 | 441 | > [!CAUTION] 442 | > [Repo](https://github.com/deislabs/wasi-experimental-http) was archived on Feb 22, 2024. 443 | 444 | 445 | > [!TIP] 446 | > Use [wasi-http](README.md#csharp-wasi-http) instead. 447 | 448 | | 449 |450 | 451 | ```csharp 452 | using Wasi.Http; 453 | 454 | var client = new HttpClient(new WasiHttpHandler()); 455 | var result = await client.GetAsync("https://httpbin.org/anything", 456 | System.Threading.CancellationToken.None); 457 | var content = await result.Content.ReadAsStringAsync(); 458 | Console.WriteLine(content); 459 | ``` 460 | 461 | | 462 |463 | 464 | [Example](https://github.com/dev-wasm/dev-wasm-dotnet/blob/a08955929b18352c1ff4916a3ecd5aca9237539c/http/Program.cs#L34) 465 | 466 | | 467 |468 | 469 | [Readme](https://github.com/dev-wasm/dev-wasm-dotnet/blob/a08955929b18352c1ff4916a3ecd5aca9237539c/http/README.md#experimental-http-client-example) 470 | 471 | | 472 |473 | 474 | [Dev Container](https://github.com/codespaces/new?hide_repo_select=true&ref=wasi-experimental-http&repo=650329121) _created by brendandburns_ 475 | 476 | | 477 |478 | 479 | Wasmtime with integrated `wasi-experimental-http` crate, e.g. [brendandburns's fork](https://github.com/brendandburns/wasmtime/commit/e2a567c4ca38190a74a7eca62cf65892547f2f3b) 480 | 481 | | 482 |483 | 484 | [Calling](https://github.com/dev-wasm/dev-wasm-dotnet/blob/a08955929b18352c1ff4916a3ecd5aca9237539c/http/WasiHttpHandler.cs#L158) [imported](https://github.com/dev-wasm/dev-wasm-dotnet/blob/a08955929b18352c1ff4916a3ecd5aca9237539c/http/WasiHttpExperimental.cs#L25) via [C level](https://github.com/dev-wasm/dev-wasm-dotnet/blob/a08955929b18352c1ff4916a3ecd5aca9237539c/http/req.h#L26) 485 | [bindings](https://github.com/dev-wasm/dev-wasm-dotnet/blob/a08955929b18352c1ff4916a3ecd5aca9237539c/http/wasi_http.c#L93) the [host function](https://github.com/deislabs/wasi-experimental-http/blob/8291baece45cc51e18e69d7d5ad39ca20744e9f9/crates/wasi-experimental-http-wasmtime/src/lib.rs#L238) implemented in [wasi-experimental-http-wasmtime](https://github.com/deislabs/wasi-experimental-http/tree/8291baece45cc51e18e69d7d5ad39ca20744e9f9/crates/wasi-experimental-http-wasmtime) Wasmtime's WASI module. 486 | 487 | | 488 |
Product / Implementation | TLDR: Usage | TLDR: Example code | 497 |Doc | 498 |Online demo | 499 |WASM Runtime | Internals: method to do real request |
---|---|---|---|---|---|---|
502 | 503 | [wasi-experimental-http](https://crates.io/crates/wasi-experimental-http) 504 | 505 | > [!CAUTION] 506 | > [Repo](https://github.com/deislabs/wasi-experimental-http) was archived on Feb 22, 2024. 507 | 508 | 509 | > [!TIP] 510 | > Use [wasi-http](README.md#cpp-wasi-http) instead. 511 | 512 | | 513 |
514 |
515 | ```C
516 | #include "req.h"
517 | #include |
540 | 541 | 542 | [Example](https://github.com/dev-wasm/dev-wasm-c/blob/37e5fcc2cad204ed2534762e81bbceaa32399952/http/main.c#L14) 543 | 544 | | 545 |546 | 547 | [Readme](https://github.com/dev-wasm/dev-wasm-c/blob/37e5fcc2cad204ed2534762e81bbceaa32399952/http/README.md#experimental-http-client-example) 548 | 549 | | 550 |551 | 552 | [Dev Container](https://github.com/codespaces/new?hide_repo_select=true&ref=wasi-experimental-http&repo=648389246) _created by brendandburns_ 553 | 554 | | 555 |556 | 557 | Wasmtime with integrated `wasi-experimental-http` crate, e.g. [brendandburns's fork](https://github.com/brendandburns/wasmtime/commit/e2a567c4ca38190a74a7eca62cf65892547f2f3b) 558 | 559 | | 560 |561 | 562 | [Calling](https://github.com/dev-wasm/dev-wasm-c/blob/37e5fcc2cad204ed2534762e81bbceaa32399952/http/main.c#L14) [imported](https://github.com/dev-wasm/dev-wasm-c/blob/37e5fcc2cad204ed2534762e81bbceaa32399952/http/req.h#L26) [host function](https://github.com/deislabs/wasi-experimental-http/blob/8291baece45cc51e18e69d7d5ad39ca20744e9f9/crates/wasi-experimental-http-wasmtime/src/lib.rs#L238) implemented in [wasi-experimental-http-wasmtime](https://github.com/deislabs/wasi-experimental-http/tree/8291baece45cc51e18e69d7d5ad39ca20744e9f9/crates/wasi-experimental-http-wasmtime) Wasmtime's WASI module. 563 | 564 | | 565 |
Product / Implementation | TLDR: Usage | TLDR: Example code | 574 |Doc | 575 |Online demo | 576 |WASM Runtime | Internals: method to do real request |
---|---|---|---|---|---|---|
579 | 580 | [wasi-experimental-http](https://crates.io/crates/wasi-experimental-http) 581 | 582 | > [!CAUTION] 583 | > [Repo](https://github.com/deislabs/wasi-experimental-http) was archived on Feb 22, 2024. 584 | 585 | 586 | > [!TIP] 587 | > Use [wasi-http](README.md#golang-wasi-http) instead. 588 | 589 | | 590 |591 | 592 | ```go 593 | response, err := Request( 594 | "https://httpbin.org/anything", "GET", 595 | "User-agent: wasm32-wasi-http", "") 596 | defer response.Close() 597 | 598 | body, err := response.Body() 599 | if err == nil { 600 | println(string(body)) 601 | } 602 | ``` 603 | 604 | | 605 |606 | 607 | [Example](https://github.com/dev-wasm/dev-wasm-go/blob/d7482362e292598bdb04493a6b664272a60e9c71/http/main.go#L8) 608 | 609 | | 610 |611 | 612 | [Readme](https://github.com/dev-wasm/dev-wasm-go/blob/d7482362e292598bdb04493a6b664272a60e9c71/http/README.md#experimental-http-client-example) 613 | 614 | | 615 |616 | 617 | [Dev Container](https://github.com/codespaces/new?hide_repo_select=true&ref=wasi-experimental-http&repo=648324699) _created by brendandburns_ 618 | 619 | | 620 |621 | 622 | Wasmtime with integrated `wasi-experimental-http` crate, e.g. [brendandburns's fork](https://github.com/brendandburns/wasmtime/commit/e2a567c4ca38190a74a7eca62cf65892547f2f3b) 623 | 624 | | 625 |626 | 627 | [Calling](https://github.com/dev-wasm/dev-wasm-go/blob/d7482362e292598bdb04493a6b664272a60e9c71/http/req.go#L64) [imported](https://github.com/dev-wasm/dev-wasm-go/blob/d7482362e292598bdb04493a6b664272a60e9c71/http/req.go#L36-L38) [host function](https://github.com/deislabs/wasi-experimental-http/blob/8291baece45cc51e18e69d7d5ad39ca20744e9f9/crates/wasi-experimental-http-wasmtime/src/lib.rs#L238) implemented in [wasi-experimental-http-wasmtime](https://github.com/deislabs/wasi-experimental-http/tree/8291baece45cc51e18e69d7d5ad39ca20744e9f9/crates/wasi-experimental-http-wasmtime) Wasmtime's WASI module. 628 | 629 | | 630 |
Product / Implementation | TLDR: Usage | TLDR: Example code | 702 |Doc | 703 |Online demo | 704 |WASM Runtime | Internals: method to do real request |
---|---|---|---|---|---|---|
707 | 708 | [wasi-experimental-http](https://crates.io/crates/wasi-experimental-http) 709 | 710 | > [!CAUTION] 711 | > [Repo](https://github.com/deislabs/wasi-experimental-http) was archived on Feb 22, 2024. 712 | 713 | 714 | > [!TIP] 715 | > Use wasi-http instead. 716 | 717 | | 718 |719 | 720 | ```zig 721 | var gp_all = std.heap.GeneralPurposeAllocator(.{}){}; 722 | const allocator = gp_all.allocator(); 723 | var status: u16 = 0; 724 | var handle: u32 = 0; 725 | 726 | _ = request("https://httpbin.org/anything", "GET", "", "", &status, &handle); 727 | defer _ = close(@bitCast(i32, handle)); 728 | 729 | var headers_buffer = try allocator.alloc(u8, 1024); 730 | var header_len: u32 = 0; 731 | _ = header(handle, "content-length", headers_buffer, &header_len); 732 | const length = try std.fmt.parseInt(u32, headers_buffer[0..header_len], 10); 733 | var buffer = try allocator.alloc(u8, length + 1); 734 | defer allocator.free(buffer); 735 | 736 | var written: u32 = 0; 737 | _ = body_read(handle, &buffer[0], @bitCast(i32, buffer.len), &written); 738 | try std.io.getStdOut().writer().print("{s}\n", .{buffer[0..written]}); 739 | ``` 740 | 741 | | 742 |743 | 744 | [Example](https://github.com/dev-wasm/dev-wasm-zig/blob/84c2edf33e025103aae4d0861177585cc56fac8e/src/http.zig#L32) 745 | 746 | | 747 |748 | 749 | [Doc](https://docs.rs/wasi-experimental-http/0.10.0/wasi_experimental_http/) 750 | 751 | | 752 |753 | 754 | [Dev Container](https://codespaces.new/dev-wasm/dev-wasm-zig) _by brendandburns_ 755 | 756 | | 757 |758 | 759 | Wasmtime with integrated `wasi-experimental-http` crate, e.g. [brendandburns's fork](https://github.com/brendandburns/wasmtime/commit/e2a567c4ca38190a74a7eca62cf65892547f2f3b) 760 | 761 | | 762 |763 | 764 | [Calling](https://github.com/dev-wasm/dev-wasm-zig/blob/84c2edf33e025103aae4d0861177585cc56fac8e/src/http.zig#L17) 765 | [imported](https://github.com/dev-wasm/dev-wasm-zig/blob/84c2edf33e025103aae4d0861177585cc56fac8e/src/http.zig#L1) 766 | Wasmtime's [host function](https://github.com/deislabs/wasi-experimental-http/blob/8291baece45cc51e18e69d7d5ad39ca20744e9f9/crates/wasi-experimental-http-wasmtime/src/lib.rs#L238). 767 | The actual request is [here](https://github.com/deislabs/wasi-experimental-http/blob/8291baece45cc51e18e69d7d5ad39ca20744e9f9/crates/wasi-experimental-http-wasmtime/src/lib.rs#L516). 768 | 769 | | 770 |