- From: Youenn Fablet <youenn.fablet@crf.canon.fr>
- Date: Fri, 05 Jan 2007 10:40:36 +0100
- To: www-ws-desc <www-ws-desc@w3.org>
After yesterday's discussion about CR117, I have the following
comments/precisions/questions.
I hope this helps clarifying the issue(s).
1) Question mark
a) Having a '?' in the values of the parameter may lead to issues: the
query string may begin in advance:
examples:
whttp:location="Send/{title}/index?" with two parameters (title and
author) may lead to something like: Send/What?/index?author="unknown".
There might be applications that will be able to handle that but others
may not be able to correctly handle this...
b) To be noted that client applications will need to check at runtime
whether the location and parameter values have a '?' in order to
correctly build the query string
Let's have whttp:location="/Send/{title}"
if title is "What" and author is "Unknown&Co", we would have:
/Send/What?author=Unknown&Co
if title is "What?ok" and author is "Unknown&Co", we would have:
/Send/What?ok&author=Unknown&Co
This might need to be clarified in the specification (cf. phillipe AI).
Please note also the use of the "&" in this example. Other reserved
characters (#) may also have some impact. Hence the proposal at the end
of this message.
2) URI escaping
Characters from @address, @whttp:location or from parameter values may
need to be escaped before being put in the HTTP request.
Characters from @address and @whttp:location are escaped as there is a
mapping defined by their type xs:anyURI.
What should be done with characters from parameter values is not
specified IIRC.
We might want to clarify whether the escaping happens before or after
the replacement of the parameter name by its value.
If we have @whttp:location="Send%{int}" and int is "20", what do we have
is either Send%20 or Send%2520.
Am I missing something?
3) Reversibility
In some cases, the templating mechanism may be ambiguous.
This may be due to the templates: whttp:location="{country}{zipcode}"
may be ambiguous or not depending on the types of country and zipcode.
This may also be due to the use of special characters within parameter
values: whttp:lcation="" may be ambiguous if some parameter values use
'&' for instance.
It makes perfect sense to allow the description of such non-reversible
URI construction.
It also makes sense IMHO to ensure the reversibility of the URI
construction, especially for SOAP.
While this is feasible to do it by constraining the type of the
parameters as arthur suggested, I think it would be better to have a
more lightweight and general solution for wsdl users : binding simple
IRI-style-compliant structures to either SOAP-response or SOAP
request-response would be quite useful.
One potential solution is to have two parameter value serialization modes:
- one straightforward that simply copies the parameter values
- another one that url encode all URL reserved/special characters
(/,?,$,&,=,.)
In the SOAP case, the second serialization mode might be the preferred one.
We could then add within the WSDL component model a property that tells
the WSDL processor how parameter values are handled for a particular
binding component.
The reversibility would then be ensured by the use of both the second
serialization mode and simple templating rules like:
- have an empty location value: all parameter values are encoded as
query parameters
- always put a '/' between parameter values
What do you think?
Youenn
Received on Friday, 5 January 2007 09:41:06 UTC