On HTTP Abuse
Every web framework I've ever worked with (Apache, CGI, Java Servlets, Quixote, Webware, Ruby on Rails, PHP, ASP.NET, CherryPy) were extremely limited in their support for the full set of capabilities provided by HTTP.
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).
Great list. There is one early framework that did some of this - http://xml.apache.org/xang/ - but it never took off. It's sort of embarassing now, but archaeologically interesting.