belatuk_http_server library

Utilities for working with HttpServer.

Example

Serving all files from the current directory.

import 'dart:io';

import 'package:http_server/http_server.dart';

Future<void> serveCurrentDirectory() async {
  var staticFiles = VirtualDirectory('.')..allowDirectoryListing = true;

  var server = await HttpServer.bind('0.0.0.0', 7777);
  print('Server running');
  server.listen(staticFiles.serveRequest);
}

Virtual directory

The VirtualDirectory class makes it easy to serve static content from the file system. It supports:

  • Range-based requests.
  • If-Modified-Since based caching.
  • Automatic GZip-compression of content.
  • Following symlinks, either throughout the system or inside a jailed root.
  • Directory listing.

See VirtualDirectory for more information.

Virtual host

The VirtualHost class helps to serve multiple hosts on the same address, by using the Host field of the incoming requests. It also works with wildcards for sub-domains.

var virtualHost = new VirtualHost(server);
// Filter out on a specific host
var stream1 = virtualServer.addHost('static.myserver.com');
// Wildcard for any other sub-domains.
var stream2 = virtualServer.addHost('*.myserver.com');
// Requests not matching any hosts.
var stream3 = virtualServer.unhandled;

See VirtualHost for more information.

Classes

HttpBody
A HTTP content body produced by HttpBodyHandler for either HttpRequest or HttpClientResponse.
HttpBodyFileUpload
A wrapper around a file upload.
HttpBodyHandler
A handler for processing and collecting HTTP message data in to an HttpBody.
HttpClientResponseBody
The body of a HttpClientResponse.
HttpMultipartFormData
The data in a multipart/form-data part.
HttpRequestBody
The body of a HttpRequest.
VirtualDirectory
A VirtualDirectory can serve files and directory-listing from a root path, to HttpRequests.
VirtualHost
A utility for handling multiple hosts on multiple sources using a named-based approach.