/dart-express

Express-like HTTP framework written in Dart

Primary LanguageDartBSD 2-Clause "Simplified" LicenseBSD-2-Clause

Dart Express Dart CI

An express-like web server framework for Dart developers.

Usage

A simple usage example:

import 'package:dart_express/dart_express.dart';

main() {
  final app = express();

  app.get('/', (req, res) {
    res.json({
      'hello': 'world',
      'test': true,
    });
  });

  app.listen(3000, (port) => print('Listening on port $port');
}

Example with route parameters

import 'package:dart_express/dart_express.dart';

main() {
  final app = express();

  app.get('/users/:userId/posts/:postId', (req, res) {
    res.json({
      'userId': req.params['userId'],
      'postId': req.params['postId'],
    });
  });

  app.listen(3000, (port) => print('Listening on port $port');
}

With Body parsing Middleware:

import 'package:dart_express/dart_express.dart';

main() {
  final app = express();

  app.use(BodyParser.json());

  app.post('/post', (req, res) {
    print(req.body);

    res.send({
      'request_body': req.body,
    });
  });

  app.listen(3000, (port) => print('Listening on port $port');
}

Using the mustache templating engine

import 'package:dart_express/dart_express.dart';

main() {
  final app = express();

  app.use(BodyParser.json());
  app.engine(MustacheEngine.use());

  app.settings
    ..viewsPath = 'custom_views_path'
    ..viewEngine = 'mustache';

  app.get('/', (req, res) {
    res.render('index', {
      'app_name': 'My Test App',
    });
  });

  app.listen(3000, (port) => print('Listening on port $port');
}

Listening to Https requests

  //listen for http requests
  app.listen(port: 80, cb: (port) => print('listening for http on port $port'));

  //assign certificate
  var context = SecurityContext();
  final chain = Platform.script.resolve('certificates/chain.pem').toFilePath();
  final key = Platform.script.resolve('certificates/key.pem').toFilePath();

  context.useCertificateChain(chain);
  context.usePrivateKey(key);

  //listen for https requests
  app.listenHttps(
    context,
    port: 443,
    cb: (port) => print('Listening for https on port $port'),
  );

Currently supported View Engines

  • Basic HTML
  • Mustache
  • Markdown
  • Jael