Существуют ли какие-либо функции, которые могли бы проанализировать uri и получить необходимый запрос (в этом примере возраст> 20)?
Да, есть функции для разбора строки запроса. В этом конкретном случае, используя Restlet, вы можете получить значение в своем ресурсе через: getRequest().getResourceRef().getQueryAsForm().getFirst("age").getValue() == "более 20"
Могут быть и другие способы (и, возможно, это улучшено в Restlet 2.0), но по моему опыту, Restlet, по крайней мере, был очень структурированным и многословным. С тех пор я перешел на JAX-RS и Jersey, чтобы создавать свои ресурсы, поскольку это позволяет мне делать то же самое с помощью всего нескольких аннотаций. (в данном случае @QueryParam("age").) Вы можете подумать о том, чтобы сделать часть ключа больше/меньше вместо значения, чтобы вам было легче анализировать строку и строить свой запрос. Идея заключалась в том, что это была бы разница между попыткой обрабатывать: http://www.example.com/people?age=over20&age=under30
по сравнению с обработкой: http://www.example.com/people?ageAtLeast=20&ageAtMost=30
Еще одна проблема, в этом примере запрос ( age>20 ) простой, поэтому его можно включить в uri, что, если у меня есть сложные запросы (объединение между двумя таблицами и т. д.)?
Здесь я бы порекомендовал поискать обсуждения дизайна Restful URI. В идеале разные объекты должны быть разными путями uri, и их отношения будут очевидны через ваш URL. Например, был вопрос, получивший большое количество голосов: RESTful URL-адрес для поиска
я должен поместить запрос в файл xml и отправить его на сервер?
Технически это потенциальный вариант, но я бы по возможности избегал его. Это очень тупо, особенно для простых GET. (Также обратите внимание, что хотя технически это не запрещено, тело объекта на GET не является стандартным, и есть много продуктов, которые не обрабатывают его должным образом, поэтому для этого вам придется злоупотреблять POST или другим методом).
person
Charlie
schedule
19.06.2011