[Zope3-dev] Other (than GET and POST) HTTP Methods

Brian Lloyd brian@zope.com
Wed, 8 Jan 2003 09:54:27 -0500


> >>- Treat each method (or some grouping of methods) as a view type.
> >>   For example, we've treated the pair of methods, GET and POST as
> >>   the "Browser" view type.  The problem is that I'm not sure there
> >>   are good groupings. For example, WebDAV uses GET and PUT, as well as
> >>   several WebDAV-specific methods.
> >
> >
> > I think I like this one the best. Does a duplication of the
> methods really
> > matter or is there a conflict if we do?
>
> Yes. It should be possible to provide PUT without providing all of WebDAV.

FWIW, an important use case we've learned from Zope 2 is: it should be
possible for a site admin to set permissions to, for example, allow
PUTs (by Composer, etc.) and FTP access, but *disallow* "WebDAV access".

My main reason for bringing that up is that a design mistake we made in
Z2 was to piggyback some of these things on each other, making it either
too hard or impossible to selectively enable things.

Another complication of recent HTTP-piggyback protocols (DAV, DASL, etc.)
is that they tend to rely on OPTIONS responses for capabilities discovery.
For example, a DAV/DASL/Delta-V client will generally make one or more
OPTIONS requests and examine the response to determine what features /
protocol levels are supported. The complicated bit is that the options
response usually needs to relay the *complete* set of capabilities (in
a given context) for the client to do the right thing.

These protocols tend to be related and layered on each other anyway, so
maybe its not a big deal, but it feels like the closer you get to the
metal, the harder it can be to implement discrete components to handle
some of these things. It seems like it would be a good idea to try to
implement (very mimimally) a DAV component along with a simple piggyback
that depends on DAV (or try to implement DAV level 1 and level 2 as
separate components which would exercise many of the same issues),
as a way to verify the connection points in the server / publisher layer.



Brian Lloyd        brian@zope.com
V.P. Engineering   540.361.1716
Zope Corporation   http://www.zope.com