angel_framework 1.1.5+1

  • README.md
  • CHANGELOG.md
  • Example
  • Installing
  • Versions
  • 51

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_framework/angel_framework.dart';

main() async {
  var app = new Angel();

  // Index route. Returns JSON.
  app.get('/', () => 'Welcome to Angel!');

  // Accepts a URL like /greet/foo or /greet/bob.
  app.get('/greet/:name', (String name) => 'Hello, $name!');

  // Pattern matching - only call this handler if the query value of `name` equals 'emoji'.
  app.get('/greet', (@Query('name', match: 'emoji') String name) => '😇🔥🔥🔥');

  // Handle any other query value of `name`.
  app.get('/greet', (@Query('name') String name) => 'Hello, $name!');

  // Simple fallback to throw a 404 on unknown paths.
  app.use((RequestContext req) async {
    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');
}

1.1.5+1

  • Patched annoying error that prevented MapServices from working, simply because <dynamic, dynamic> is incompatible with <String, dynamic>.

1.1.5

  • AnonymousService methods can now return FutureOr.
  • Added findOne to Service.

1.1.4+11

  • Close the response, etc. after finalizers are done.

1.1.4+10

  • Change the zone error handler to take an Object

1.1.4+9

  • Patch ResponseContext.redirectTo to fold parameters, instead of as-casting them to Map<String, dynamic>.
  • Apply this same folding to ResponseContext.redirectToAction.

1.1.4+8

  • Finalizers can now write to the response buffer or send headers, because said getter now only returns an unmodifiable Map when using streaming.
  • Tracked down an annoying line that printed many, many null messages.

1.1.4+7

  • Remove cast for Dart 1.x.
  • RequestContext.injections is no longer cached or read-only.
  • ResponseContext now has renderParams.

1.1.4+6

  • Almost 100% working with 2.0.0-dev.64.1. In said version of Dart, dart:mirrors is broken, and therefore breaks detection of metadata.

1.1.4+5

  • Intermediary release while patching up Dart 2 bugs.
  • Stricter Dart 2 use.
  • Remove AngelMetrics for good.

1.1.4+4

  • Fix a bug that caused a race condition in hooked services.

1.1.4+3

  • Don't create a Stopwatch in production.
  • Fix a bug where handleAngelHttpException created a race condition.
  • ResponseContext.serialize now returns a bool.

1.1.4+2

  • Fix a bug that prevented proper rendering of views.
  • Fixed a hidden bug that prevents error handling when a stack trace is null.
  • Fixed a bug that prevented proper handling of content-encoding.

1.1.4+1

  • Ensure correct error handling when useZone is false.

1.1.4

  • Remove all usages of async/await in the core library.
  • AngelConfigurer now accepts FutureOr.
  • AngelHttp now has a useZone flag to disable custom zones.

1.1.3

  • AngelHttp now handles requests in a Zone.
  • Use package:dart2_constant.

1.1.2

  • MapService will store created_at and updated_at as String.

1.1.1

  • ResponseContext no longer automatically closes if serializer returns an empty string.
  • Added autoSnakeCaseNames to MapService.
  • Deprecated Angel.createZoneForRequest.
  • Deprecated all Angel methods that directly touch an HttpServer or HttpRequest.
  • Created the AngelHttp class.
  • Removed explicit dependence on dart:io for Angel, RequestContext, ResponseContext.
  • Created lib/http.dart, which exports HTTP-specific functionality.
  • AnonymousService now takes FutureOr.
  • Service.toId no longer only takes a String, and is generically-typed.

1.1.0+3

  • Modified ResponseContext#isOpen to also return false if streaming is being used.

1.1.0+2

  • Modified handleAngelHttpException to only run rescue code if the response is still open. Prevents application crashes.

1.1.0+1

  • Modified _matchesId in MapService to support custom ID fields.

1.1.0

  • The default errorHandler now only sends HTML if the user explicitly accepts it.

1.1.0-alpha+9

  • Fixed a bug that prevented isProduction from ever returning true.
    • This enabled caching, which greatly improved performance.
  • Requests no longer have independent zones, which greatly improved performance.
  • FormatException, when caught, is automatically transformed in a 400 error response.
  • Added extension to RequestContext.
  • Added strict to RequestContext#accepts.
  • Added a toString override for the Providers class.
  • Returned to RegExp for stripping stray slashes.
  • The request path is now only parsed once.
  • Optimized the parsing of the ACCEPT_ENCODING header.

1.1.0-alpha+8

  • Added an autoIdAndDateFields flag to MapService. Finally.

1.1.0-alpha+7

  • Made handlerCache public.
  • Added AngelMetrics.

1.1.0-alpha+6

  • Added @Parameter() annotations, with support for pattern matching.

1.1.0-alpha+5

  • Closed #166, killing any hanging Stopwatch instances when streaming.
  • Removed AngelPlugin and AngelMiddleware, as well as the @proxy annotations from Angel and RequestContext.
  • Officially deprecated properties in Angel.
  • Fixed a bug where cached routes would not heed the request method. #173
  • Reworked error handling logic; now, errors will not automatically default to sending JSON.
  • Removed the onController stream from Angel.
  • Controllers now longer use call, which has now been renamed to configureServer.

1.1.0-alpha+4

  • Made injections in RequestContext private.
  • Renamed properties in AngelBase to configuration.

1.1.0-alpha+3

  • Fixed a bug where encoders would cause a malformed response to be sent.
  • Fixed a bug where encoders would not always use the correct encoder.

1.1.0-alpha

  • Removed AngelFatalError, and subsequently fatalErrorStream.
  • Removed all @deprecated members.
  • Removed @Hooked, beforeProcessed, and afterProcessed.

example/main.dart

import 'package:angel_framework/angel_framework.dart';

main() async {
  var app = new Angel();

  // Index route. Returns JSON.
  app.get('/', () => 'Welcome to Angel!');

  // Accepts a URL like /greet/foo or /greet/bob.
  app.get('/greet/:name', (String name) => 'Hello, $name!');

  // Pattern matching - only call this handler if the query value of `name` equals 'emoji'.
  app.get('/greet', (@Query('name', match: 'emoji') String name) => '😇🔥🔥🔥');

  // Handle any other query value of `name`.
  app.get('/greet', (@Query('name') String name) => 'Hello, $name!');

  // Simple fallback to throw a 404 on unknown paths.
  app.use((RequestContext req) async {
    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');
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  angel_framework: ^1.1.5+1

2. Install it

You can install packages from the command line:

with pub:


$ pub get

Alternatively, your editor might support pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:angel_framework/angel_framework.dart';
  
Version Uploaded Documentation Archive
1.1.5+1 Aug 4, 2018 Go to the documentation of angel_framework 1.1.5+1 Download angel_framework 1.1.5+1 archive
1.1.5 Jul 12, 2018 Go to the documentation of angel_framework 1.1.5 Download angel_framework 1.1.5 archive
1.1.4+11 Jul 9, 2018 Go to the documentation of angel_framework 1.1.4+11 Download angel_framework 1.1.4+11 archive
1.1.4+10 Jul 9, 2018 Go to the documentation of angel_framework 1.1.4+10 Download angel_framework 1.1.4+10 archive
1.1.4+9 Jul 9, 2018 Go to the documentation of angel_framework 1.1.4+9 Download angel_framework 1.1.4+9 archive
1.1.4+7 Jun 27, 2018 Go to the documentation of angel_framework 1.1.4+7 Download angel_framework 1.1.4+7 archive
1.1.4+6 Jun 23, 2018 Go to the documentation of angel_framework 1.1.4+6 Download angel_framework 1.1.4+6 archive
1.1.4+5 Jun 23, 2018 Go to the documentation of angel_framework 1.1.4+5 Download angel_framework 1.1.4+5 archive
1.1.4+4 Jun 20, 2018 Go to the documentation of angel_framework 1.1.4+4 Download angel_framework 1.1.4+4 archive
1.1.4+3 Jun 10, 2018 Go to the documentation of angel_framework 1.1.4+3 Download angel_framework 1.1.4+3 archive

All 154 versions...

Popularity:
Describes how popular the package is relative to other packages. [more]
78
Health:
Code health derived from static analysis. [more]
0
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
60
Overall:
Weighted score of the above. [more]
51
Learn more about scoring.

We analyzed this package on Oct 16, 2018, and provided a score, details, and suggestions below. Analysis was completed with status tool failures using:

  • Dart: 2.0.0
  • pana: 0.12.4

Platforms

Detected platforms: unsure

Error(s) prevent platform classification:

Fix dependencies in pubspec.yaml.

Analysis issues and suggestions

Fix dependencies in pubspec.yaml.

Running pub upgrade failed with the following output:

ERR: The current Dart SDK version is 2.0.0.
 
 Because angel_framework depends on container >=0.1.1 which requires SDK version >=1.8.0 <2.0.0, version solving failed.

Maintenance issues and suggestions

Fix platform conflicts. (-20 points)

Error(s) prevent platform classification:

Fix dependencies in pubspec.yaml.

The description is too short. (-20 points)

Add more detail about the package, what it does and what is its target use case. Try to write at least 60 characters.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=1.8.0 <3.0.0