Easy-to-use server side framework for Dart
Nothing complicated.
get
embla
=> [
Instead of a "main" function, Embla requires an "embla" getter in the script, that
returns a list of Bootstrappers.
new
HttpBootstrapper(
Bootstrappers are plugins to the application. Out of the box, Embla comes with an
HTTP specific one.
pipeline:
pipe(
The HTTP bootstrapper has a "pipeline" parameter, representing the HTTP pipeline.
// Middleware
RemoveTrailingSlashMiddleware,
This middleware redirects all requests that have a trailing slash (like /about/)
to the corresponding url without the slash (/about).
LoggerMiddleware,
This middleware logs all requests to the terminal along with some statistics and
a timestamp.
ErrorHandlerMiddleware,
This middleware handles all errors thrown in the route handlers or subsequent
middleware. You can also add handlers for specific types of exceptions, like
HttpNotFoundException.
InputParserMiddleware,
This middleware parses the body of the requests and saves it to an "Input" object,
which can then be injected in the route handlers, by the Dependency Injection system.
// Routes
Route.all('auth/*',
A route is a middleware that creates a fork in the pipeline. All requests that start
with "/auth" now flows through this new pipeline. Only if it doesn't find any matching
handler within, it will be passed on the the "Hello, world!" handler below.
AuthController
Controllers, just like routes, are middleware too. They contain collections of
routes, which they map to methods with special annotations.
Since this "AuthController" is routed to the "auth/*" namespace, all controller
routes will be relative to that prefix.
),
Route.get('about',
() => 'About page!'),
Routes can specify the method it requires. This one only matches GET requests.
Routes that doesn't end with an asterisk requires the URL to match exactly. Requests
to the URL "about/something-else" would fall through to the "Hello, world!" handler.
// Fallback handler
() =>
'Hello, world!'
A simple pipeline containing a single handler that will respond to every
request—Hello world!
All requests that don't get a response from middleware above this line will
fall through to this handler.
Add some middleware
Add some middleware
Add some routes
Add some routes
)
)
];
Get started!