- From: Roy T. Fielding <fielding@gbiv.com>
- Date: Mon, 15 Oct 2007 18:47:01 -0700
- To: Mark Nottingham <mnot@mnot.net>
- Cc: URI <uri@w3.org>, Joe Gregorio <joe@bitworking.org>, Stefan Eissing <stefan.eissing@greenbytes.de>
On Oct 15, 2007, at 6:03 PM, Mark Nottingham wrote: > On 16/10/2007, at 10:11 AM, Roy T. Fielding wrote: > >> I think it is critical to limit the potential operations to >> typical string operations, both for simplicity of implementation >> and also for our capacity to understand the template without >> needing to refer to external rules or processing. There is no >> reason to have URI templates if we don't limit them to a >> declarative syntax > > Agreed; I didn't mean to imply anything else. My concern was more > that we'd be able to cover the diversity of use cases we've heard > about (much less hadn't come across yet) with a reasonably-sized > library of operators in one go. I was actually responding to Stefan's suggestion that we include function names for arbitrarily namespaced actions. If we are trying to solve a declarative problem, we need to stick to self-descriptive solutions. > WRT "string operations": what about allowing variable values to be > lists of strings? E.g., this seems like it would be useful: > > template: http://example.org/sausage?{,&condiments} > condiments = ["tomato sauce", "chutney", "relish"] > result: http://example.org/sausage?condiments=tomato% > 20sauce&condiments=chutney&condiments=relish > > Otherwise, I've got to define condiment1, condiment2, and so on, or > fall back to simple substitution and build it myself. I think that is mixing up Joe's join syntax and my param=value substitution (the & operator is confusing, which is why I used plus "+" for my simple joins and comma "," for param=value). I am struggling to think of a use case for arrays in real practice. I could understand modifying join such that it treats single variables with array values the same as multiple variables with single values, e.g, http://example.org/sausage?{+,|condiments} = http://example.org/sausage?condiments=tomato%20sauce,chutney,relish but I can't think of a case where I would need that for a web service. Also, how does the reader of the template know that the variable is supposed to be an array? Hmm, how about name = "Roy" address = ["23 Corporate Plaza DR", "Suite 215", "Newport Beach, CA 92660", "USA"] http://example.org/checkaddress{,&|name,address} = <http://example.org/checkaddress?name="Roy" &address=23%20Corporate%20Plaza%20DR &address2=Suite%20215&address3=Newport%20Beach,%20CA%2092660 &address4=USA> That would work. The ',' operator would then supply the template reader with an expectation that multi-valued parameters should be listed with a numeric suffix for values N>1. An alternative would be to go the perl direction and add a form of type annotation to the variable names, as in http://example.org/checkaddress{,&|name,@address} but variable types might be a slope too slippery. ....Roy
Received on Tuesday, 16 October 2007 01:47:20 UTC