- From: Marc Portier <marc.portier@gmail.com>
- Date: Mon, 12 Sep 2011 16:37:07 +0200
- To: "Roy T. Fielding" <fielding@gbiv.com>
- CC: URI <uri@w3.org>
On 09-09-11 22:29, Roy T. Fielding wrote: > On Sep 8, 2011, at 11:34 PM, Marc Portier wrote: >> Can't say I have a problem with it, but surely the current approach has a very logic reason of existence, no? > > The original was a bit of a coin toss. Although it looks more consistent with > forms syntax to do > >> {?list} ?list=red,green,blue' >> {?list*} ?list=green&list=red&list=blue > > the reality is that most forms-processing libraries assume that > the names are unique. They are usually processed as an associative > array or hash, so what happens is that the last parameter named > "list" wins. That's why my first try at this pattern appended > a number to the subsequent names. > Which I think is a neat idea in fact. I don't want to rewind all done work, but is there any history on why it was dropped? > At this point, I am just going to say that if an application > actually wants the above, then it should supply an associative > array itself and not rely on funky list magic. Also, someone hm, I understand (and agree on) what you say about the list magic, but I'm underwhelmed at yet another push off to context-values-pre-processing (as we had with the defaults) In general terms it feels like the slippery slope from effectiveness versus efficiency (As a wise man once told me: "In your strive for efficiency you should watch out not to become ineffective") Or put bluntly: if all is done in context-pre-processing, then all what remains to be done is string-concatenation... (I know I'm stretching it, just wanting to make it extreme to get the argument across.) Might be just me, but I like to think about the 'context' as rather close to a business object in an application. The more we need to tweak it before being 'useable' in uri-templates, the lesser value remains to using the uri-templates, no? > else requested the ability to define query parameters without > any =value, as in > > foo?a=c&d > > which is possible (in the editor's draft) if we have > > a := "c" > b := [ "d" ] > Which triggers Tom's remark about the 'type' of value driving the naming or not, rather then the template declaring it. > {?a,b} > and adding e:= [('f','g')] then (surprisingly?) explodes {?a,b,e} to ?a=c&d&f=g >> So why not think about having both just more explicit by declaring two kinds of 'explodes' one 'named' (*), the other 'unnamed' (% maybe?) > > Modifiers like explode effectively double the complexity of expansion, > so I am reticent to add any more unless there is a proven need. > Ok, I buy that. But. I don't think I was adding an aspect to what uri-templates is trying to do: Deciding between 'named' versus 'unnamed' is already in there, some of it rather implicit, but still. Dunno if below helps, if not just ignore, I know I have a natural reflex towards consensus, but I do know howto value clear (even limiting) decisions. Taking a step back, maybe we should first agree on the aspects uri-templates should cover? For each part of the uri to be expanded, what are the decisions to be taken? * what prefix-char to use * and should it be present or not if no remainder follows * following-join-char to use * and should it be used between empty values * add or not the context-name as used in the template * or silence/drop it, and * should that be driven by the types of the context values itself? * add or not a member name (like the dropped sequence-number suffix, or the associative array explosion where keys are promoted to ) * in which cases? for which * explode arrays and hashmaps to follow up values * truncate the value to its first N chars * binding char between name and value (=) * and if it should be or not present in absence of the value * way of encoding (allow reserved or not) * for both names and values ? * (no longer) provide a default for undefined values (miss any?) If I look at my implementation and the suggestion stemming from the table in appendix A. Then the current operators are pretty much somewhat a short-hand notation, each of them implying some of the above decisions. Yet with every iteration of those implied decisions there seems to be a side stepping up and not finding their use-case or preferred set of decisions? Can/should we silence those discussions by offering an explicit/canonical syntax (through a new 'elaborate' operator) that allows for a very clear, explicit, unambiguous expression that is capable of catching all aspects? regards, -marc= > ....Roy > >
Received on Monday, 12 September 2011 14:37:44 UTC