- From: David Orchard <dorchard@bea.com>
- Date: Thu, 30 Sep 2004 01:01:06 -0700
- To: "Hugo Haas" <hugo@w3.org>, <www-ws-desc@w3.org>
I don't quite get how 1a is crisper. Seems like 2) is the way to go for
me.
Cheers,
Dave
> -----Original Message-----
> From: www-ws-desc-request@w3.org [mailto:www-ws-desc-request@w3.org]
On
> Behalf Of Hugo Haas
> Sent: Wednesday, September 29, 2004 2:04 AM
> To: www-ws-desc@w3.org
> Subject: LC45: {http location} sometimes a template, sometimes not
>
> All,
>
> I took an action item last week to start a discussion on the nature
> and use of the {http location} property.
>
> The HTTP binding defines the {http location} as a binding operation
> property to specify a per-operation request URI, with the endpoint
> address as the base URI to construct it.
>
> The issue is that, while the application/xml and multipart/form-data
> serializations, as well as probably most other serializations that
> people will come up with, use this property as a plain URI, the
> application/x-www-form-urlencoded serialization uses the value of this
> property as a template to form a URI.
>
> In other words, we have:
>
> - for application/xml and multipart/form-data:
>
> Request URI = base({http location}, {address})
>
> - for application/x-www-form-urlencoded:
>
> Request URI = base(template({http location}), {address})
>
> where:
> - base(U1, U2) computes a URI with using U1 as relative to U2
> - template(T) computes a URI based on a template T.
>
> Our text says that {http location} is always a template, which isn't
> correct as shown above. Nor is it always a standard URI. It's a
> property that basically has two different types for now, and this
> isn't very well stated.
>
> After having thought about this a little, we have three possibilities:
>
> 1. introduce a new property, {http location template}:
>
> a. and use the whttp:location attribute to set both {http location}
> and {http location template}; we could then say that we always
> have:
>
> Request URI = base({http location}, {address})
>
> but also that a serialization might define:
>
> {http location} = template({http location template})
>
> with its own syntax, i.e. its own template() function.
>
> b. and introduce a new attribute whttp:locationTemplate in the XML
> serialization to specify {http location template}; the drawback
> is that it is going to complicate the binding as sometimes
> whttp:locationTemplate will have to be used, and other times
> whttp:location will be the one which is relevant, which is going
> to be confusing.
>
> 2. make it clear that {http location} can be either a URI template or
> a normal URI, and that the way it is interpreted to construct the
> HTTP Request URI is defined by the input serialization.
>
> (2) is basically the same as (1a), except that we are not being as
> rigorous. (1b) is going to be too messy IMO.
>
> Here is what (1a) would entail:
>
> - modify the properties on the binding operation:
>
> {http location}
>
> A wsdls:anyURI. This URI is combined with the base URI specified
> in the {address} property of the endpoint element to form the full
> URI for the HTTP request to invoke the operation. It MUST contain
> an absolute or a relative URI, i.e. it MUST NOT include a fragment
> identifier in the URI.
>
> {http location template}
>
> A wsdls:anyURI. This is a template following the URI syntax which
> may be used by a particular input serialization to generate the
> value of the {http location}. The syntax of the template as well
> as the rules to generate {http location} are defined by the
> serialization. It MUST contain an absolute or a relative URI, i.e.
> it MUST NOT include a fragment identifier in the URI.
>
> - modify the XML mapping, by saying that whttp:location maps to both
> {http location} and {http location template}.
>
> - rewrite '3.8.1 Serialization as "application/x-www-form-urlencoded"'
> to talk about computing the value of {http location} from {http
> location template} with our syntax.
>
> I think that (2) would basically mean:
>
> - clarifying {http location}
>
> {http location}
>
> A wsdls:anyURI. This URI is combined with the base URI specified
> in the {address} property of the endpoint element to form the full
> URI for the HTTP request to invoke the operation. It MUST contain
> an absolute or a relative URI, i.e. it MUST NOT include a fragment
> identifier in the URI. Input serializations may define additional
> processing rules to be applied to the value of {http location}
> before combining it with the {address} property of the endpoint
> element to form the HTTP request URI. For example, the
> application/x-www-form-urlencoded serialization defined in section
> 3.8.1 defines a syntax to use the {http location} as a template
> using element of the instance data.
>
> - clarifying 3.8.1 Serialization as
> "application/x-www-form-urlencoded" to indicate that the rules we
> describe are for template({http location}) which need to be used as
> explained in the description of {http location} as described above.
>
> So (1a) is crisper, but (2) is simpler.
>
> Comments?
>
> Regards,
>
> Hugo
>
> --
> Hugo Haas - W3C
> mailto:hugo@w3.org - http://www.w3.org/People/Hugo/
Received on Thursday, 30 September 2004 08:01:08 UTC