XmlFileHandler now supports create on PUT

2007-08-25 @ 21:26#

i updated my XmlFileHandler module to support creating new resources on PUT. this allows folks to name their resource directly. now, instead of POSTing a new document to the location (/my-documents/) and then having the server generate a unique resource id, users can PUT the new document directly to the resource location (my-documents/my-resource-name). i also made this a switch when defining the resource (AllowCreateOnPut = true;) that is set to false by default.

while this is good news, it's still only partially done. to make create on PUT safe, i should enforce ETag support for PUTs. that means i should require If-Match and/or Not-Modified-Since headers for PUT updates. i need to review this to make sure, but i suspect that, if AllowCreateOnPut = true; then all update PUTs should be required to supply If-Match or Not-Modified-Since.

that will take a bit of planning, but shouldn't be too tough.

updated 2007-08-26

ha! it just dawned on my that i can use a HEAD request with Cache-Control: no-cache to pull the most recent ETag/Last-Modified value of any object in the system! that's a quite a simple way to implement the solution to the lost update problem.

nice to know that something like this is already in place in the exyus framework!

code