Re: Trailing "/" in BIND Requests

   From: "Yaron Goland (Exchange)" <yarong@Exchange.Microsoft.com>

   The inability to bind "/" simply means that your model is broken. There is
   nothing exceptionally special about the "/" resource name other than it
   doesn't have a parent. It must be just as bindable as any other resource
   name.

The BIND operation is the way of linking a resource by name into a
collection resource (i.e. giving it another parent).  If a BIND were allowed
to succeed on "/", it would result in "/" having a parent, which would
violate the very thing that you identified as being special about "/",
namely that it has no parent.

Another way to see why this is so, is to observe that BIND is
really is a 3 argument operation:

BIND(source-resource-URL, destination-collection-URL, binding-name).

For convenience, we have encoded it as:

BIND source-resource-URL
Destination: destination-collection-URL/binding-name

This is unambiguous, since you strip off a trailing slash (if any)
from the Destination URL, use the last segment of the resulting URL to
get the binding-name, and the remainder of the Destination URL is the
destination-collection-URL.  This works for every URL except for
"/", since stripping off the trailing slash will leave you with the
empty string from which you can get neither a legal binding-name
nor a legal destination-collection-URL.

Judy: We might want some form of this preceding paragraph to the spec
to make sure servers parse the Destination header of the BIND properly.

Cheers,
Geoff

Received on Thursday, 16 September 1999 10:20:59 UTC