| OLD | NEW |
| 1 ## Web Server Middleware for Dart | 1 ## Web Server Middleware for Dart |
| 2 | 2 |
| 3 [](https
://travis-ci.org/dart-lang/shelf) |
| 4 [](https://coveralls.io/r/dart-lang/shelf?branch=travis_coveralls) |
| 5 |
| 3 ## Introduction | 6 ## Introduction |
| 4 | 7 |
| 5 **Shelf** makes it easy to create and compose **web servers** and **parts of web | 8 **Shelf** makes it easy to create and compose **web servers** and **parts of web |
| 6 servers**. How? | 9 servers**. How? |
| 7 | 10 |
| 8 * Expose a small set of simple types. | 11 * Expose a small set of simple types. |
| 9 * Map server logic into a simple function: a single argument for the request, | 12 * Map server logic into a simple function: a single argument for the request, |
| 10 the response is the return value. | 13 the response is the return value. |
| 11 * Trivially mix and match synchronous and asynchronous processing. | 14 * Trivially mix and match synchronous and asynchronous processing. |
| 12 * Flexibliity to return a simple string or a byte stream with the same model. | 15 * Flexibliity to return a simple string or a byte stream with the same model. |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 } | 127 } |
| 125 ``` | 128 ``` |
| 126 | 129 |
| 127 ## Inspiration | 130 ## Inspiration |
| 128 | 131 |
| 129 * [Connect](http://www.senchalabs.org/connect/) for NodeJS. | 132 * [Connect](http://www.senchalabs.org/connect/) for NodeJS. |
| 130 * Read [this great write-up](http://howtonode.org/connect-it) to understand | 133 * Read [this great write-up](http://howtonode.org/connect-it) to understand |
| 131 the overall philosophy of all of these models. | 134 the overall philosophy of all of these models. |
| 132 * [Rack](http://rack.github.io/) for Ruby. | 135 * [Rack](http://rack.github.io/) for Ruby. |
| 133 * [WSGI](http://legacy.python.org/dev/peps/pep-3333/) for Python. | 136 * [WSGI](http://legacy.python.org/dev/peps/pep-3333/) for Python. |
| OLD | NEW |