deno_fetch extension provides a standards-compliant HTTP client implementation, including the Fetch API, Request, Response, Headers, and FormData.
Location
ext/fetch/
What It Provides
Fetch API
The main interface for making HTTP requests:Request and Response
Constructing and manipulating HTTP messages:Headers
Manage HTTP headers:FormData
Construct multipart form data:Custom HTTP Client
Create HTTP clients with custom settings:EventSource (Server-Sent Events)
Stream events from the server:Supported Protocols
HTTP/HTTPS
Standard HTTP requests:File URLs
Read local files (requires--allow-read):
Data URLs
Inline data:Key Operations
Rust operations exposed to JavaScript:Implementation Details
Extension Definition
HTTP Client Architecture
Built on hyper and tokio:- Automatic decompression (gzip, brotli)
- Connection pooling
- Retry logic for certain errors
- Custom DNS resolver support
- TLS with certificate validation
Request Lifecycle
- JavaScript: Call
fetch(url, options) - op_fetch: Create request, check permissions, return request RID
- op_fetch_send: Send request via hyper, return response RID
- JavaScript: Read response body via resource ops
Resource Management
Fetch uses resources for:DNS Resolution
Custom DNS resolver with caching:Proxy Support
Supports multiple proxy types:Performance Features
Connection Pooling
Reuses TCP connections:Automatic Decompression
Transparent gzip/brotli decompression:Streaming Body
Zero-copy streaming for large responses:Error Handling
File Structure
Standards Compliance
Implements:- Fetch Living Standard
- HTTP/1.1 (RFC 7230-7235)
- HTTP/2 (RFC 7540)
- Server-Sent Events
See Also
- Web Extension - Provides base types
- WebSocket Extension - WebSocket protocol
- HTTP Extension - HTTP server