platform/framework/example/hostname.dart
Tobe O 609d06f66b Add 'framework/' from commit '64d6729def5ffcf225a2c8f74fdf115218df1c56'
git-subtree-dir: framework
git-subtree-mainline: 6f6510ab27
git-subtree-split: 64d6729def
2020-02-15 18:12:48 -05:00

47 lines
1.3 KiB
Dart

import 'dart:async';
import 'package:angel_framework/angel_framework.dart';
import 'package:angel_framework/http.dart';
import 'package:logging/logging.dart';
import 'package:pretty_logging/pretty_logging.dart';
Future<void> apiConfigurer(Angel app) async {
app.get('/', (req, res) => 'Hello, API!');
app.fallback((req, res) {
return 'fallback on ${req.uri} (within the API)';
});
}
Future<void> frontendConfigurer(Angel app) async {
app.fallback((req, res) => '(usually an index page would be shown here.)');
}
main() async {
// Logging set up/boilerplate
hierarchicalLoggingEnabled = true;
Logger.root.onRecord.listen(prettyLog);
var app = Angel(logger: Logger('angel'));
var http = AngelHttp(app);
var multiHost = HostnameRouter.configure({
'api.localhost:3000': apiConfigurer,
'localhost:3000': frontendConfigurer,
});
app
..fallback(multiHost.handleRequest)
..fallback((req, res) {
res.write('Uncaught hostname: ${req.hostname}');
});
app.errorHandler = (e, req, res) {
print(e.message ?? e.error ?? e);
print(e.stackTrace);
return e.toJson();
};
await http.startServer('127.0.0.1', 3000);
print('Listening at ${http.uri}');
print('See what happens when you visit http://localhost:3000 instead '
'of http://127.0.0.1:3000. Then, try '
'http://api.localhost:3000.');
}