187次重大发布

0.190.0 2024年8月22日
0.188.0 2024年7月31日
0.167.0 2024年3月28日
0.153.0 2023年12月21日
0.12.0 2020年11月23日

#110 in HTTP客户端

Download history 2348/week @ 2024-05-03 1862/week @ 2024-05-10 2294/week @ 2024-05-17 1689/week @ 2024-05-24 1551/week @ 2024-05-31 1553/week @ 2024-06-07 2485/week @ 2024-06-14 1552/week @ 2024-06-21 982/week @ 2024-06-28 1576/week @ 2024-07-05 1431/week @ 2024-07-12 1032/week @ 2024-07-19 1698/week @ 2024-07-26 1237/week @ 2024-08-02 697/week @ 2024-08-09 458/week @ 2024-08-16

4,233 每月下载量
52 个crate中使用 (直接使用 19 个)

MIT 许可证

340KB
9K SLoC

Rust 6K SLoC // 0.0% comments JavaScript 3K SLoC // 0.2% comments TypeScript 310 SLoC // 0.5% comments

deno_fetch

此crate实现了Fetch API。

规范: https://fetch.spec.whatwg.org/

使用示例

从javascript,包含扩展的源代码,并将以下属性分配给全局作用域

import * as headers from "ext:deno_fetch/20_headers.js";
import * as formData from "ext:deno_fetch/21_formdata.js";
import * as request from "ext:deno_fetch/23_request.js";
import * as response from "ext:deno_fetch/23_response.js";
import * as fetch from "ext:deno_fetch/26_fetch.js";
import * as eventSource from "ext:deno_fetch/27_eventsource.js";

// Set up the callback for Wasm streaming ops
Deno.core.setWasmStreamingCallback(fetch.handleWasmStreaming);

Object.defineProperty(globalThis, "fetch", {
  value: fetch.fetch,
  enumerable: true,
  configurable: true,
  writable: true,
});

Object.defineProperty(globalThis, "Request", {
  value: request.Request,
  enumerable: false,
  configurable: true,
  writable: true,
});

Object.defineProperty(globalThis, "Response", {
  value: response.Response,
  enumerable: false,
  configurable: true,
  writable: true,
});

Object.defineProperty(globalThis, "Headers", {
  value: headers.Headers,
  enumerable: false,
  configurable: true,
  writable: true,
});

Object.defineProperty(globalThis, "FormData", {
  value: formData.FormData,
  enumerable: false,
  configurable: true,
  writable: true,
});

然后从rust,在您的 RuntimeOptionsextensions 字段中提供 deno_fetch::deno_fetch::init_ops_and_esm<Permissions>(Default::default())

其中

  • Permissions: 实现 deno_fetch::FetchPermissions 的结构体
  • Options: 实现 deno_fetch::Options,它实现了 Default

依赖关系

  • deno_webidl: 由 deno_webidl crate 提供
  • deno_web: 由 deno_web crate 提供
  • deno_url: 由 deno_url crate 提供
  • deno_console: 由 deno_console crate 提供

提供的操作

以下操作提供,可以通过 Deno.ops 访问

  • op_fetch
  • op_fetch_send
  • op_fetch_response_upgrade
  • op_utf8_to_byte_string
  • op_fetch_custom_client

依赖关系

~110MB
~2.5M SLoC