mirror of
https://github.com/denoland/deno.git
synced 2024-11-30 16:40:57 -05:00
0e2f6e38e7
This commit makes HTTP client parameters used in `fetch` API configurable on the extension initialization via a callback `client_builder_hook` that users can provide. The main motivation behind this change is to allow `deno_fetch` users to tune the HTTP/2 client to suit their needs, although Deno CLI users will not benefit from it as no JavaScript interface is exposed to set these parameters currently. It is up to users whether to provide a hook function. If not provided, the default configuration from hyper crate will be used. Ref #26785 |
||
---|---|---|
.. | ||
20_headers.js | ||
21_formdata.js | ||
22_body.js | ||
22_http_client.js | ||
23_request.js | ||
23_response.js | ||
26_fetch.js | ||
27_eventsource.js | ||
Cargo.toml | ||
dns.rs | ||
fs_fetch_handler.rs | ||
internal.d.ts | ||
lib.deno_fetch.d.ts | ||
lib.rs | ||
proxy.rs | ||
README.md | ||
tests.rs |
deno_fetch
This crate implements the Fetch API.
Spec: https://fetch.spec.whatwg.org/
Usage Example
From javascript, include the extension's source, and assign the following properties to the global scope:
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,
});
Then from rust, provide
deno_fetch::deno_fetch::init_ops_and_esm<Permissions>(Default::default())
in
the extensions
field of your RuntimeOptions
Where:
- Permissions: a struct implementing
deno_fetch::FetchPermissions
- Options:
deno_fetch::Options
, which implementsDefault
Dependencies
- deno_webidl: Provided by the
deno_webidl
crate - deno_web: Provided by the
deno_web
crate - deno_url: Provided by the
deno_url
crate - deno_console: Provided by the
deno_console
crate
Provided ops
Following ops are provided, which can be accessed through Deno.ops
:
- op_fetch
- op_fetch_send
- op_utf8_to_byte_string
- op_fetch_custom_client