/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() {
  var 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() {
  var 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() {
  var 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() {
  var app = express();

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

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

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

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

Currently supported View Engines

  • Basic HTML
  • Mustache
  • Jael

Roadmap

  • Basic Routing
  • Easily build Middleware
  • Add & use view engines easily
  • Add in-depth testing
  • Clean up imports and extract middleware to separate packages
  • Add Dart "morgan" middleware package for logging HTTP requests
  • Add CORS middleware package