dartness

Creator: coderz1093

Last updated:

0 purchases

dartness Image
dartness Images

Languages

Categories

Add to Cart

Description:

dartness

Dartness
Minimalist, middleware based, web framework
import 'package:dartness/dartness.dart';

void main() {

final app = new Dartness();
final router = new Router();

router.get('/', (Context context) async => null);

app.use(router);

app.listen(port: 4040);

}
copied to clipboard

uses middleware to create working flow
simple

Basic features:

all parts is middleware
errors can be captured on any step
can be used simple dynamic routes
router skips followed routes, if one was matched
middleware can be grouped into modules

Roadmap:

add binding routes to class methods
add logger
add nester routes
add middleware chains
add post/get parameters as arguments to routes
function result as response
use isolates

Full Example:
import 'package:dartness/dartness.dart';

void main() {

final app = new Dartness();

app.use((Context context) async {
// will be called first
}, catchError: false);

final router = new Router();

router.get('/:param1/:param2/:param3', (String param3, Context context, String param1, String param2) async {
// you can use params direct trough function arguments, or get from
// context.req.params = map {param1: 'value1', param2: value2, param3: value3}
print('GET /' + context.req.params.toString());
});

router.get(r'/:blogId(\d+$)', (String blogId, Context context) {
// will match on route: /some-blog-title-1234/
// regex params can be get as function arguments as well
context.req.params['blogId']; // 1234
});

router.get(r'/secret/:id', (int id, Context context){
if (id != 2) {
// will be called first middleware with catchError = true
throw new Error();
}
})
.useBefore((Context context) { /* will be called before route */ })
.useAfter((Context context) { /* will be called after route */ });

// simple ger request
router.get('/', (Context context) async => null);

// simple post request
// uses body_parser to decode:
// application/json
// application/x-www-form-urlencoded
// multipart/form-data
router.post('/', (Context context) async => print(context.req.body['message']['text']));

app.use(router); // you can use more than one router

app.use((Context context) async {
// will be called only if error will be thrown
}, catchError: true);

app.listen(port: 4040);
}
copied to clipboard
Class bonding example
import 'package:dartness/dartness.dart';

class A {
@Get('/')
void index(Context c) {
c.res.write('index');
}

@Get('/:param')
void param(Context c, String param) {
c.res.write(param);
}
}

void main() {
final app = new Dartness();
final route = new Router();

route.bind(new A());

app.use(route);
app.listen(port: 3030);
}
copied to clipboard

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.