DEV Community

Cover image for Quick Tip: Write an HTTP server in Dart 💻
Jermaine
Jermaine

Posted on • Edited on • Originally published at creativebracket.com

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) { ... });
Enter fullscreen mode Exit fullscreen mode

bind() represents a static method that takes as required arguments a hostname and a port. This returns a Future<HttpServer>, 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 Streaming interface:

// ...
server.listen((HttpRequest request) {
  request.response.write('Hello world');
  request.response.close();
});
Enter fullscreen mode Exit fullscreen mode

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();
      });
    });
}
Enter fullscreen mode Exit fullscreen mode

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();
  }
}
Enter fullscreen mode Exit fullscreen mode

Here's a video demonstrating the first example:

Hope this was insightful.

Like, share and follow me for more content on Dart.

Quick links

  1. HttpServer class
  2. Free Dart screencasts on Egghead.io

Top comments (0)