redstone 0.5.2

  • Readme
  • Changelog
  • Example
  • Installing
  • 14

Redstone.dart #

Build Status

Redstone.dart is a server-side, metadata driven microframework for Dart.

####How does it work? Redstone.dart allows you to easily publish your functions and classes through a web interface, by just adding some annotations to them.

import 'package:redstone/server.dart' as app;

helloWorld() => "Hello, World!";

main() {

####Want to know more? Check out our wiki! :)

v0.5.2 #

  • Fix: Request's state is being improperly cached (see issue #16).

v0.5.1 #

  • Fix: Correctly handle route exceptions.

v0.5.0 #

  • Added support for Shelf middlewares and handlers (see documentation)
  • BREAKING CHANGE: Redstone.dart will no longer serve static files directly. You can use a Shelf handler for this (see documention)
  • BREAKING CHANGE: It's no longer possible to access HttpRequest and HttpResponse. If you need to inspect or modify the response, you can use the global response object (see documentation)
  • It's now possible to define multiple routes to the same path (see documentation)
  • Added @DefaultRoute annotation (see documentation)
  • Added serveRequests(Stream<HttpRequest> requests) method, which is an alternative to the start() method.

v0.4.0 #

v0.3.1 #

  • Renamed project to Redstone.dart
  • New and improved documentation

v0.3.0 #

  • Added Route.matchSubPaths property (see issue #5)
  • Added ErrorHandler.urlPattern property (check documentation for details)
  • Added request attributes (check documentation for details)
  • Added support for dependency injection (check documentation for details)

v0.2.1 #

  • Added support for basic authentication (thanks Y12STUDIO for the contribution)
    • Added parseAuthorizationHeader() method.
    • Added authenticateBasic() method.

v0.2.0 #

  • BREAKING CHANGES (check documentation for more details):
    • VirtualDirectory is now configured with jailRoot = true and followLinks = false. You can change these flags through start() method.
    • For security and perfomance reasons, the parse of request body is now delayed as much as possible, so interceptors will receive null if they call request.body (although request.bodyType is still filled). If your interceptor need to inspect the request body, you can set Interceptor.parseRequestBody = true.
    • Multipart requests (file uploads) are now refused by default. If your method need to receive multipart requests, you can set Route.allowMultipartRequest = true.
    • All arguments of chain.interrupt() method are now optional.
  • Bug fixes in abort(), redirect() and chain.interrupt() methods. (see issue #3).

v0.1.2 #

  • Fix: bloodless crashes on Dart 1.3.

v0.1.1 #

  • Fix: malformed requests can cause a crash

v0.1.0 #

  • Bug fixes
  • BREAKING CHANGE: now receives a callback, instead of returning a Future
  • Added new API for unit tests
  • Updated documentation

v0.0.4 #

  • Fix: chain.interrupt() is not closing the HttpResponse stream

v0.0.3 #

  • Added a grinder task to properly copy sever's files to the build folder
  • Updated documentation with a better approach for building projects

v0.0.2 #

  • Small fix to VirtualDirectory configuration

v0.0.1 #

  • First release


library test_lib;

import 'package:redstone/server.dart' as app;
import 'package:shelf/shelf.dart' as shelf;

helloWorld() => "Hello, World!";

getUsername(String username) => ">> $username";

doge() { {
    return app.response.readAsString().then((user) {
      app.response = new shelf.Response.ok("wow! such user!\n\n$user\n\nso smart!");

class Group {

  @app.Route("/json", methods: const[app.POST])
  echoJson(@app.Body(app.JSON) Map json) => json;

  @app.Route("/form", methods: const[app.POST])
  echoFormAsJson(@app.Body(app.FORM) Map form) => form;


main() {


Use this package as a library

1. Depend on it

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

  redstone: ^0.5.2

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:redstone/mocks.dart';
import 'package:redstone/server.dart';
import 'package:redstone/tasks.dart';
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

This package version is not analyzed, because it is more than two years old. Check the latest stable version for its analysis.

The package version is not analyzed, because it does not support Dart 2. Until this is resolved, the package will receive a health and maintenance score of 0.

Analysis issues and suggestions

Support Dart 2 in pubspec.yaml.

The SDK constraint in pubspec.yaml doesn't allow the Dart 2.0.0 release. For information about upgrading it to be Dart 2 compatible, please see


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=1.4.0 <2.0.0