Date:Sun, 21 Dec 2003 05:57:35 -0500
Reply-To:"Z39.50 Next-Generation Initiative" <[log in to unmask]>
Sender:"Z39.50 Next-Generation Initiative" <[log in to unmask]>
From:Eliot Christian <[log in to unmask]>
Subject:base-url includes "?"
Comments:To: [log in to unmask]In-Reply-To:<3FE39E81.21788.A73E2B@localhost>
Content-Type:text/plain; charset="us-ascii"; format=flowed
At 12:57 AM 12/20/2003 +0100, Theo van Veen wrote:
>Allthough it's a minor thing I would like the "?" being part of what we
>call the base-url.
>The reason for this is services can take (private) parameters as part of
>the base-url.
>IMO the SRU URL should be base-url + request rather than base-url +
>?request. It
>allows for example to use the database name as a parameter as part of the
>base-url.
>Anyway it gives more freedom to how the server is implemented and I don't
>think at
>interferes with other things.
I agree very strongly with Theo's point. I think this is common
practice, used for example in OpenGIS Consortium services such
as Web Mapping Service http://www.opengis.org/docs/01-068r3.pdf:
6.2.2 HTTP GET
An Online Resource URL intended for HTTP GET requests is in
fact only a URL prefix to which additional parameters are
appended in order to construct a valid Operation request.
A URL prefix is defined as an opaque string including the
protocol, hostname, optional port number, path, a question
mark '? ', and, optionally, one or more server-specific
parameters ending in an ampersand '& '. The prefix uniquely
identifies the particular service instance. A client appends
the necessary request parameters as name/ value pairs in the
form "name= value&". The resulting URL shall be valid
according to the HTTP Common Gateway Interface standard [CGI],
which mandates the presence of '? ' before the sequence of
query parameters and the '& ' between each parameter.
The URL prefix shall end in either a '? ' (in the absence of
additional server-specific parameters) or a '& '. In practice,
however, Clients should be prepared to add a necessary trailing
'? ' or '& ' before appending the Operation parameters defined
in this specification in order to construct a valid request URL.
Eliot