The Web Services Description WG offered up their latest attempt at an HTTP binding for WSDL last week. I think it’s about as good as you can hope something like that to get, without rejecting Web services. But it seems the group asked itself some good questions while reviewing it, in particular this one;
Is it good practice to extract part of your content to parameterize your URI? If not, what is the best way?
To which I responded;
Invoke GET on the URI to retrieve a document, and include in that a declaration of how the URI can be parameterized. This is what forms are for (well, “GET forms” anyhow); see XForms or RDF Forms.
If you didn’t recognize it, this is a textbook case of bootstrapping; see a URI, GET it, etc.. It reminds me of the Java Beans component model, which, for all its flaws (namely, that it wasn’t useful for much more than GUI stuff), had its own wonderful bootstrap mechanism; the zero argument constructor (sorry, no good URI for it). This permitted anybody who was in possession of a bean class to instantiate it without a priori information about it. Some might argue that this was just deferring binding, and they’d be right, but there’s no “just” about it; deferred (aka late) binding permits more functionality to be internalized into the system. In the case of beans, this was realized via the use of a wizard which could be triggered when instantiating beans that needed parameterizing.
Bootstrapping is your friend.