[uf-rest] REST opacity and URL schemes.
Charlie Savage
cfis at interserv.com
Sat Apr 22 23:50:46 PDT 2006
+1
Charlie
Dan Kubb wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
>>> * If "/books/4" represents the "record", the PUT would need to
>>> contain _everything_ about that record; synthesizing additional
>>> fields (like last modified) seems like 'cheating', and inconsistent
>>> with PUT semantics
>>
>> Could you tell me what other resources than
>> http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html expand on this
>> interpretation of PUT? My naive reading of 9.6 PUT seems to be that
>> it talks all about updating and modifying. Not necessarily only
>> complete replacements. But I'm new here, so perhaps I just have an
>> incomplete picture.
>>
>> I will say that PUT would seem a ton more useful if it didn't have as
>> strict a usage pattern as you imply. If that's the case, PUT seems to
>> be unusable for most web application purposes. And if that's the
>> case, I really question whether its worth doing other-verbs-over-post
>> mapping at all in Rails. Doesn't seem worth the trouble just to get
>> DELETE.
>
> I think its important to separate what PUT was intended to do by
> the spec authors, and what PUT has been used for in specific
> implementations.
>
> People familiar with PUT normally think of it in a WebDAV way
> where it only makes sense to completely replace an existing file
> with a new file. In most cases it doesn't make sense to replace
> a part of a file with a chunk of data.
>
> Just because its used this way in WebDAV doesn't mean that
> its the only way PUT can be used.
>
> The specs that David references is clear on the differences
> between POST and PUT:
>
> The fundamental difference between the POST and PUT requests is
> reflected in the different meaning of the Request-URI. The URI
> in a POST request identifies the resource that will handle the
> enclosed entity. That resource might be a data-accepting process,
> a gateway to some other protocol, or a separate entity that
> accepts annotations. In contrast, the URI in a PUT request
> identifies the entity enclosed with the request -- the user
> agent knows what URI is intended and the server MUST NOT attempt
> to apply the request to some other resource. If the server
> desires that the request be applied to a different URI, it MUST
> send a 301 (Moved Permanently) response; the user agent MAY then
> make its own decision regarding whether or not to redirect the request.
>
> (from http://rfc.net/rfc2616.html#s9.6)
>
> So this means that POST is a way of sending data to a resource
> that handles the request directly and/or can delegate the handling
> to something else at its discretion. PUT is a way of changing
> the state of a resource explicitly identified by its URI.
>
> The spec is even pretty explicit that it doesn't dictate how PUT
> should be handled by the server:
>
> HTTP/1.1 does not define how a PUT method affects the state of an
> origin server.
>
> (from http://rfc.net/rfc2616.html#s9.6)
>
> This sentence is the key -- the spec goes out of its way to
> say it does not impose any restriction on what PUT should do
> except to say that state will change in some way that is
> application specific.
>
> In this light I see no reason that PUT cannot be used to update
> specific attributes of a resource. If you *could not* use PUT
> in any other way except as a total replace function I would assert
> that it has pretty much zero value outside of the file management
> space.
>
> - --
>
> Thanks,
>
> Dan
> __________________________________________________________________
>
> Dan Kubb
> Autopilot Marketing Inc.
>
> Email: dan.kubb at autopilotmarketing.com
> Phone: 1 (604) 820-0212
> Web: http://autopilotmarketing.com/
> vCard: http://autopilotmarketing.com/~dan.kubb/vcard
> __________________________________________________________________
>
>
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.2.2 (Darwin)
>
> iD8DBQFESxP+4DfZD7OEWk0RAt+1AJ9Cxju/P/tO8FBRDScRXf/cH1SX7QCgpEAi
> sH0M1CSYSi1+7hg86Z01Jb4=
> =EmCv
> -----END PGP SIGNATURE-----
> _______________________________________________
> microformats-rest mailing list
> microformats-rest at microformats.org
> http://microformats.org/mailman/listinfo/microformats-rest
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3241 bytes
Desc: S/MIME Cryptographic Signature
Url : http://microformats.org/discuss/mail/microformats-rest/attachments/20060423/ba94ef4e/smime-0001.bin
More information about the microformats-rest
mailing list