Я работаю над реализацией архитектуры ресурсов RESTful API в моей микро-фреймворке.Я моделирую свои пути к ресурсам параллельно с иерархиями объектов, используя преимущества необычной функциональности маршрутизации, которую я недавно разработал.(О, это странно!)
Синтаксис URI, который я использую:
'http:// www.site.com / resource [ ; key1 = param1 [ & key2 = param2 ] ]'
Это позволило бы использовать такие URI как:
'http://www.site.com/user;id=123/article;id=456'
.что-то вроде (как только я включаю эту функцию в маршрутизатор):
$user->getByParams('id=123')->article->getByParams('id=456');
Итак, дополнительные примеры:
'GET /user;id=123 GET'
# read User object data matching id=123
'GET /user;id=123/article;id=456'
# read Article object data matching id=456
# belonging to User object matching id=123
'GET /user;name=john&age=20/article;title=hello%20world'
# read Article object(s) data matching title='hello world'
# belonging to User object(s) matching name='john' and age=20
Проблема, с которой я столкнулся, связана с последним, сопоставляя несколько результатовпо данным запроса (в SQL LIKE
). Какой безопасный символ для обозначения подстановочного знака?Звездочка (*
) появляется здесь в списке зарезервированных под разделителей http://labs.apache.org/webarch/uri/rfc/rfc3986.html#reserved,, поэтому она останется незашифрованной.Возможно, было бы проще использовать% 25 (%
)
Я понимаю, что эта проблема может зависеть от реализации, однако существуют ли какие-либо платформы, которые реализуют архитектуру ресурсов RESTful API, аналогичную этой, на которую я мог бы сослатьсядля идей?
Кроме того, я иду против зерна полностью здесь?