| « Customization vs handler dispatch in web application servers | It seems to be working for Jesus » |
Sylvain just reminded me of one of Ryan Tomayko's early rants on HTTP and REST, On HTTP Abuse. It was probably the one post that jump-started my exploration of REST, which has been guiding my contributions to CherryPy.
In that post, he presented a short list of things which a "web framework" should provide:
For instance, which frameworks ...
- ... help implement content negotiation properly?
- ... provide facilities for implementing a smart caching strategy for dynamic content? (proper use of If-Modified-Since, Expires, Cache-Control, etc.)
- ... make dealing with media types easy?
- ... make dealing with character encodings easy?
- ... encourage the use of standard HTTP authentication schemes?
- ... have a sane mechanism for attaching different behavior to different verbs for a single resource?
- ... help ensure that URIs stay cool?
- ... make dealing with transfer encodings (gzip, compress, etc.) easy?
- ... help you use response status codes properly? (e.g. Nearly all dynamic content returns either a 200 or 500).
Even if CherryPy isn't a framework, it should do most of these. The latest release of CherryPy, version 2.1, addresses some of these (3, 4, 5, 8, and 9). The others are possible, but not as easy as they could be; 1, 2, and 6 are top priorities (for me, anyway) to work into version 2.2. Items 3 and 4 could use more work, too.
I've posted a point-by-point response to Ryan's article as to how Django handles the issues he brought up. It does rather well. :-)
http://www.djangoproject.com/weblog/2005/oct/24/http/
Hey, thanks for the link, Adrian! Oddly enough, I read your post immediately after it was created, by mere chance. I was cruising the django site, looking for answers to my config and dispatch questions (see the post I just made; corrections welcome).
Congratulations on the continued flurry of development regarding Django. :) I hope we can both exceed Ryan's desires Real Soon Now...