deno_http extension provides a fast, standards-compliant HTTP server implementation supporting HTTP/1.1, HTTP/2, and WebSocket upgrades.
Location
ext/http/
What It Provides
HTTP Server
Create HTTP servers withDeno.serve():
Request Handling
Access request information:Response Types
Return various response types:Streaming Responses
Stream data to clients:File Serving
Serve static files:WebSocket Upgrade
Upgrade HTTP connections to WebSocket:Request Routing
Route requests based on URL patterns:Middleware Pattern
Implement middleware:Server Sent Events (SSE)
Implement server-sent events:Compression
Automatic response compression:Protocol Support
HTTP/1.1
Full HTTP/1.1 support including:- Persistent connections
- Chunked transfer encoding
- Pipelining
- Range requests
HTTP/2
HTTP/2 features:- Multiplexing
- Server push (when enabled)
- Header compression (HPACK)
- Stream prioritization
Key Operations
Rust operations exposed to JavaScript:Implementation Details
Extension Definition
Built on Hyper
Uses the Hyper HTTP library:- Zero-copy I/O
- Efficient connection pooling
- Automatic protocol negotiation
- Built-in HTTP/2 support
Automatic Compression
Transparent compression middleware:- Client supports it (Accept-Encoding)
- Content-Type is compressible
- Response size > 20 bytes
- No Content-Encoding already set
Connection Lifecycle
- Accept TCP connection
- Perform TLS handshake (if HTTPS)
- Negotiate HTTP version (HTTP/1.1 or HTTP/2)
- Serve requests
- Keep connection alive or close based on headers
Resource Management
HTTP resources:Performance Features
Zero-Copy I/O
Direct buffer transfers:Connection Pooling
Reuses connections:Async I/O
Non-blocking operations:OpenTelemetry Integration
Built-in metrics collection:- Request duration histogram
- Active requests counter
- Request/response body size histograms
- HTTP status codes
File Structure
Standards Compliance
Implements:See Also
- Fetch Extension - HTTP client
- WebSocket Extension - WebSocket protocol
- Web Extension - Base types