OLD | NEW |
(Empty) | |
| 1 ## Web Server Middleware for Dart |
| 2 |
| 3 ## Introduction |
| 4 |
| 5 **Shelf** makes it easy to create and compose **web servers** and **parts of web |
| 6 servers**. How? |
| 7 |
| 8 * Expose a small set of simple types. |
| 9 * Map server logic into a simple function: a single argument for the request, |
| 10 the response is the return value. |
| 11 * Trivially mix and match synchronous and asynchronous processing. |
| 12 * Flexibliity to return a simple string or a byte stream with the same model. |
| 13 |
| 14 ## Example |
| 15 |
| 16 See `example/example_server.dart` |
| 17 |
| 18 ```dart |
| 19 import 'package:shelf/shelf.dart' as shelf; |
| 20 import 'package:shelf/shelf_io.dart' as io; |
| 21 |
| 22 void main() { |
| 23 var handler = const shelf.Stack().addMiddleware(shelf.logRequests()) |
| 24 .addHandler(_echoRequest); |
| 25 |
| 26 io.serve(handler, 'localhost', 8080).then((server) { |
| 27 print('Serving at http://${server.address.host}:${server.port}'); |
| 28 }); |
| 29 } |
| 30 |
| 31 shelf.Response _echoRequest(shelf.Request request) { |
| 32 return new shelf.Response.ok('Request for "${request.pathInfo}"'); |
| 33 } |
| 34 ``` |
| 35 |
| 36 ## Inspiration |
| 37 |
| 38 * [Connect](http://www.senchalabs.org/connect/) for NodeJS. |
| 39 * Read [this great write-up](http://howtonode.org/connect-it) to understand |
| 40 the overall philosophy of all of these models. |
| 41 * [Rack](http://rack.github.io/) for Ruby. |
| 42 * [WSGI](http://legacy.python.org/dev/peps/pep-3333/) for Python. |
OLD | NEW |