platform/packages/framework
2021-07-08 10:44:27 +08:00
..
.vscode Migrated angel_configuration 2021-04-10 19:23:57 +08:00
example Updated framework 2021-07-08 10:42:40 +08:00
lib Updated framework 2021-07-08 10:42:40 +08:00
performance/hello Updated framework 2021-07-08 10:42:40 +08:00
test Updated framework 2021-07-08 10:42:40 +08:00
tool create packages dir 2020-02-15 18:13:38 -05:00
.travis.yml create packages dir 2020-02-15 18:13:38 -05:00
analysis_options.yaml Updated vscode settings 2021-07-08 10:44:27 +08:00
AUTHORS.md Publish angel3_merge_map and angel3_mock_request 2021-05-14 16:06:16 +08:00
CHANGELOG.md Updated framework 2021-07-08 10:42:40 +08:00
dev.key create packages dir 2020-02-15 18:13:38 -05:00
dev.pem create packages dir 2020-02-15 18:13:38 -05:00
LICENSE Updated license 2021-06-14 11:52:58 +08:00
pubspec.yaml Updated framework 2021-07-08 10:42:40 +08:00
README.md Updated framework 2021-07-08 10:42:40 +08:00
TODO.md Updated framework 2021-07-08 10:42:40 +08:00

Angel3 Framework

version Null Safety Gitter

License

A high-powered HTTP server with support for dependency injection, sophisticated routing and more. Angel3 is designed to keep the core minimal but extensible. Angel3 won't dictate which database or web templating engine to use. Everything is customizable, so that Angel3 can grow to support your application as your use cases increases in complexity.

This is the core of the Angel3 framework. To build real-world applications, please see the User Guide.

import 'package:angel3_container/mirrors.dart';
import 'package:angel3_framework/angel3_framework.dart';

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

    // Index route. Returns JSON.
    app.get('/', (req, res) => res.write('Welcome to Angel3!'));
  
    // 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 AngelHttpException.notFound(
        message: 'Unknown path: "${req.uri.path}"',
      );
    });

    var http = 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');
}