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@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


_______________________________________________
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev



_______________________________________________
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev
.



--
Justin Clark-Casey (justincc)
OSVW Consulting
http://justincc.org
http://twitter.com/justincc
_______________________________________________
Opensim-dev mailing list
Opensim-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev

Reply via email to