[Opensim-dev] REST handlers use partial string matching

Justin Clark-Casey jjustincc at googlemail.com
Tue Apr 1 19:30:40 UTC 2014


Ah okay, I see what you mean.  Yes, the asset/ part matches the asset handler and then it is in charge of interpreting 
the subsequent 456392f6-c0b3-a346-6465-8218cbe7abe84592 section of the path.

When you said 782911... below I thought that you were talking about UUID fragments as used by git to identify commits, 
where "782911" would normally be enough to identify an asset like "782911f6-c0b3-a346-6465-8218cbe7abe84592" so you 
could say something like GET http://myserver.com/asset/782911.  But that was a misinterpretation.

On 01/04/14 20:00, Melanie wrote:
> It is required because it's the basis of "extra path info". It's not
> part of REST, but rather part of HTTP.
>
> Requesting
>
> /asset/456392f6-c0b3-a346-6465-8218cbe7abe84592
>
> which is not a registered URL, will invoke
>
> /asset/
>
> which is. The ID passed as part of the URL is then given to that
> handler as the extra path info. You have the same thing in apache.
>
> Basically, any URL longer than and starting with a registered URL
> will invoke that registered URL with extra path info.
> The fallacy in our server is that the matching isn't by path parts,
> but character-wise.
>
> Melanie
>
> On 01/04/2014 20:03, Justin Clark-Casey wrote:
>> In what context is such partial matching required?  It is not a requirement of REST, as far as I know.
>>
>> On 01/04/14 18:55, Melanie wrote:
>>> The REST URLs need to use partial matching, however, current
>>> semantics are broken.
>>>
>>> Without partial matching, URLS like /assets/782911..... would not
>>> work. the issue here is that it should match whole URL parts, not
>>> partial URL parts. Matching partial words as it does now seems like
>>> someone was cutting corners, it's not by design.
>>>
>>> /assets/ should match /assets/9887234...... but not /assets_exist.
>>> The slash is the differentiator and partial compares of URL string
>>> prefixes should be done by full-string matches of slash/delimited
>>> parts, not prefix matching of the entire URL.
>>>
>>> Melanie
>>>
>>> On 01/04/2014 15:00, Oren Hurvitz wrote:
>>>> I tried to add a REST handler at the endpoint "/assets_exist". It turns out
>>>> that I can't do that, because REST handlers are searched using partial
>>>> string matches, so servers that don't implement the new handler will
>>>> mistakenly choose the "/assets" endpoint instead.
>>>>
>>>> For now, I solved the problem by using a different endpoint:
>>>> "/get_assets_exist".
>>>>
>>>> For the future, I think that this should be changed so that only full string
>>>> matches work. Otherwise each time a new handler is added it will have to
>>>> find an endpoint name that isn't a prefix of any current endpoint -- a
>>>> difficult and error-prone task. Before I do that, does anyone know of
>>>> endpoints that rely on the current behavior (partial string matches)?
>>>>
>>>>
>>>>
>>>> --
>>>> View this message in context: http://opensim-dev.2196679.n2.nabble.com/REST-handlers-use-partial-string-matching-tp7579119.html
>>>> Sent from the opensim-dev mailing list archive at Nabble.com.
>>>> _______________________________________________
>>>> Opensim-dev mailing list
>>>> Opensim-dev at lists.berlios.de
>>>> https://lists.berlios.de/mailman/listinfo/opensim-dev
>>>>
>>>>
>>> _______________________________________________
>>> Opensim-dev mailing list
>>> Opensim-dev at lists.berlios.de
>>> https://lists.berlios.de/mailman/listinfo/opensim-dev
>>>
>>
>>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
> .
>


-- 
Justin Clark-Casey (justincc)
OSVW Consulting
http://justincc.org
http://twitter.com/justincc



More information about the Opensim-dev mailing list