A high-powered HTTP server with support for dependency injection, sophisticated routing and more.
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea waterfall -> chain Sep 12, 2018
.vscode 71 Apr 1, 2017
example 17 Dec 14, 2018
lib add hashcode for providers Dec 31, 2018
performance/hello change body parsing Dec 9, 2018
test 2.0.0-alpha.16 Dec 11, 2018
tool 2.0.0-alpha.11 Nov 11, 2018
.gitignore 1.1.3 May 16, 2018
.travis.yml Test against Dart 1.x Jun 8, 2018
CHANGELOG.md add hashcode for providers Dec 31, 2018
LICENSE Pre-reflect Dec 31, 2016
README.md All tests pass Aug 21, 2018
TODO.md Got rid of 'part', added 'export'. Also fixed attachment Sep 15, 2016
analysis_options.yaml +5 Jun 23, 2018
dev.key 2.0.0-alpha.11 Nov 11, 2018
dev.pem 2.0.0-alpha.11 Nov 11, 2018
pubspec.yaml add hashcode for providers Dec 31, 2018

README.md

angel_framework

Pub build status

A high-powered HTTP server with support for dependency injection, sophisticated routing and more.

This is the core of the Angel framework. To build real-world applications, please see the homepage.

import 'package:angel_container/mirrors.dart';
import 'package:angel_framework/angel_framework.dart';

main() async {
    var app = new Angel(reflector: MirrorsReflector());

    // Index route. Returns JSON.
    app.get('/', (req, res) => res.write('Welcome to Angel!'));
  
    // Accepts a URL like /greet/foo or /greet/bob.
    app.get(
      '/greet/:name',
      (req, res) {
        var name = req.params['name'];
        res
          ..write('Hello, $name!')
          ..close();
      },
    );
    
    // Pattern matching - only call this handler if the query value of `name` equals 'emoji'.
    app.get(
      '/greet',
      ioc((@Query('name', match: 'emoji') String name) => '😇🔥🔥🔥'),
    );
    
    // Handle any other query value of `name`.
    app.get(
      '/greet',
      ioc((@Query('name') String name) => 'Hello, $name!'),
    );
    
    // Simple fallback to throw a 404 on unknown paths.
    app.fallback((req, res) {
      throw new AngelHttpException.notFound(
        message: 'Unknown path: "${req.uri.path}"',
      );
    });

    var http = new AngelHttp(app);
    var server = await http.startServer('127.0.0.1', 3000);
    var url = 'http://${server.address.address}:${server.port}';
    print('Listening at $url');
    print('Visit these pages to see Angel in action:');
    print('* $url/greet/bob');
    print('* $url/greet/?name=emoji');
    print('* $url/greet/?name=jack');
    print('* $url/nonexistent_page');
}