On 16 Nov 2005, at 23:10, Jacob Kaplan-Moss wrote:
However... the concept is. Developers shouldn't be blocking GWA; we should be programming web apps that conform to expected HTTP behavior. GWA *only* issues GET requests, and if an app modifies data based on a GET, then the app should be considered broken.
I'm afraid I just don't buy this. It holds for most cases, but there are some significant ones where it doesn't. My favourite example is Flickr's internal message system (or any other Webmail). It tells you at the top of the page if you have any unread messages, and when you view your inbox it shows unread messages in bold. The act of viewing a message (by following a GET link) marks that message as read.
Sure, you could require people to click a "mark as read" button that does a POST, or even have the interface to select a message to read use POST buttons. That would suck though - it would break the ability to open a bunch of messages in a new tab for one thing.
Meanwhile, GWA hits your inbox and instantly marks all your unread messages as read! (That's assuming Flickr doesn't block it - I'll have to check).
HTTP purity is a nice ideal, but until the HTML form model contains better support for calling HTTP verbs that reflect what you are actually trying to do it just isn't practical in every case. It's those edge cases that make GWA's behaviour a bad idea.
Cheers, Simon