2008-09-29 2 views
3

Использование Restlet Мне нужно было выполнить простой статический контент в том же контексте, что и мой веб-сервис. Я настроил компонент с Directory, но в тестировании, я нашел, что это будет только служить «index.html», все остальные результаты в 404.Restlet - показ статического содержимого

router.attach("/", new Directory(context, new Reference(baseRef, "./content")); 

Итак ... http://service и http://service/index.html как работа,

но http://service/other.html дает мне 404

Может кто-нибудь пролить некоторый свет на это? Я хочу, чтобы любой файл в каталоге ./content был доступен.

PS: В конечном итоге я планирую использовать обратный прокси-сервер и обслуживать все статические данные с другого веб-сервера, но пока мне это нужно, чтобы работать как есть.

ответ

2

Ну, я понял вопрос. Фактически, Restlete появляется для маршрутизации запросов на основе префикса, но не обрабатывает длинный соответствующий префикс правильно, он также игнорирует расширения файлов.

Так, например, если у меня был ресурс, прикрепленный к «/ другому» ... и каталог на «/». И я запрашиваю /other.html, что на самом деле происходит, я получаю ресурс «/ other». (Расширение игнорируется?), А не статический файл из каталога, как я ожидал бы.

Если Айнон знает, почему это, или как его изменить, я бы с удовольствием узнал. Это неважно, просто для тестирования. Я думаю, что мы поставим apache или nginx перед этим в производстве в любом случае.

+2

Вы получили ответ за это? – Shah 2011-06-20 19:20:21

2

Маршрутизаторы в Restlet по умолчанию используют режим согласования «Template.MODE_STARTTS_WITH». Вы всегда можете установить Router по умолчанию, выполнив router.setMatchingMode (Template.MODE_EQUALS). Это приведет к строгому сопоставлению по умолчанию для attach. Вы можете переопределить отдельные маршруты с помощью setMatchingMode.

Good documentation on Restlet Routing

Смежные вопросы