Shelf
Web server middleware for Dart
...Map server logic into a simple function: a single argument for the request, the response is the return value. Trivially mix and match synchronous and asynchronous processing. Flexibility to return a simple string or a byte stream with the same model. An adapter must handle all errors from the handler, including the handler returning a null response. It should print each error to the console if possible, then act as though the handler returned a 500 response. The adapter may include body data for the 500 response, but this body data must not include information about the error that occurred. ...