platform/packages/framework/README.md

64 lines
2.5 KiB
Markdown
Raw Normal View History

2021-06-22 08:17:15 +00:00
# Angel3 Framework
2021-07-08 02:42:40 +00:00
[![version](https://img.shields.io/badge/pub-v4.1.1-brightgreen)](https://pub.dartlang.org/packages/angel3_framework)
2021-05-14 10:34:09 +00:00
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
2021-05-15 06:18:06 +00:00
[![Gitter](https://img.shields.io/gitter/room/angel_dart/discussion)](https://gitter.im/angel_dart/discussion)
2016-06-21 22:56:04 +00:00
2021-05-14 10:34:09 +00:00
[![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/angel3/packages/framework/LICENSE)
2016-06-21 22:56:04 +00:00
2021-07-08 02:42:40 +00:00
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.
2017-01-12 01:52:06 +00:00
2021-07-08 02:42:40 +00:00
This is the core of the [Angel3](https://github.com/dukefirehawk/angel/tree/angel3) framework. To build real-world applications, please see the [User Guide](https://angel3-docs.dukefirehawk.com).
2017-06-19 01:53:51 +00:00
2017-01-12 01:52:06 +00:00
```dart
2021-05-14 10:34:09 +00:00
import 'package:angel3_container/mirrors.dart';
import 'package:angel3_framework/angel3_framework.dart';
2017-01-12 01:52:06 +00:00
2021-06-22 08:17:15 +00:00
void main() async {
2019-05-02 22:48:31 +00:00
var app = Angel(reflector: MirrorsReflector());
2018-08-21 18:50:43 +00:00
// Index route. Returns JSON.
2021-07-08 02:42:40 +00:00
app.get('/', (req, res) => res.write('Welcome to Angel3!'));
2018-08-21 18:50:43 +00:00
// 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();
},
2018-04-06 19:56:14 +00:00
);
2018-08-21 18:50:43 +00:00
// 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) {
2019-05-02 22:48:31 +00:00
throw AngelHttpException.notFound(
2018-08-21 18:50:43 +00:00
message: 'Unknown path: "${req.uri.path}"',
);
});
2019-05-02 22:48:31 +00:00
var http = AngelHttp(app);
2018-08-21 18:50:43 +00:00
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');
2017-01-12 01:52:06 +00:00
}
2017-03-06 00:52:16 +00:00
```