Quick Tip: Write an HTTP server in Dart 💻

In today’s quick tip, we will explore one of the inbuilt classes Dart gives us for creating web servers. This class comes as part of the “dart:io” library in the SDK.
The class in particular is appropriately named HttpServer
. Here’s how we’ll use it:
HttpServer.bind("localhost", 8080)
.then((HttpServer server) { ... });
bind()
represents a static method that takes as requires arguments a hostname and a port. This returns a Future<HttpServer>
object, allowing us to chain on methods like then()
and catch
.
A successfully bound hostname and port now allows us to receive incoming requests by calling the listen()
method on the server object, which has a Stream
ing interface:
// ...
server.listen((HttpRequest request) {
request.response.write('Hello world');
request.response.close();
});
Receiving the request allows us to write out our response and end it. Here’s the full snippet in its glory:
import 'dart:io';void main() {
HttpServer
.bind("localhost", 8080)
.then((HttpServer server) {
server.listen((HttpRequest request) {
request.response.write("Hello world!");
request.response.close();
});
});
}
Using Async/Await 🔥
Here’s a prettier way of writing a basic server:
import 'dart:io';
main() async {
var server = await HttpServer.bind("localhost", 8080);
await for (var request in server) {
request.response.write("Hello world");
request.response.close();
}
}
Here’s a video demonstrating the first example:
Hope this was insightful.
Like, share and follow me 😍 for more content on Dart.
Quicklinks
✉️ Subscribe to CodeBurst’s once-weekly Email Blast, 🐦 Follow CodeBurst on Twitter, view 🗺️ The 2018 Web Developer Roadmap, and 🕸️ Learn Full Stack Web Development.