Я разрабатываю простое веб-приложение с помощью Tornado. Он обслуживает некоторые динамические файлы и некоторые статические. Динамические - не проблема, но у меня проблемы с обслуживанием статического файла. Я хочу обслуживать файл /path/to/foo.json при обращении к URL-адресу /foo.json.
Обратите внимание, что /path/to/foo.json находится вне корня документа. В Apache я бы просто установил псевдоним. С Торнадо у меня есть:
app = tornado.web.Application([
(r'/dynamic\.html', MyService, dict(param = 12345)),
(r'/(foo\.json)', tornado.web.StaticFileHandler, {'path': '/path/to/foo.json'})
])
Я добавил оператор группы регулярных выражений ()
, чтобы удовлетворить Tornado, который в противном случае выдал исключение. Но теперь, когда я открываю /foo.json, я получаю 404: Файл не найден.
Тесты показывают, что Tornado пытается использовать путь, указанный в качестве корневого каталога, к которому он добавляет foo.json, подразумевая, что мой файл можно было бы найти, если бы он находился в /path/to/foo.json/foo.json. Близко, но не совсем.
Полагаю, я мог бы сократить свой путь до простого «/ path / to», что вызовет выборку /path/to/foo.json по URL-адресу /foo.json, но это заставит меня использовать то же имя в URL-адресе. как в файловой системе. Как я могу просто сделать простой произвольный URL-адрес для сопоставления файлов?
Я провел небольшое исследование по этому поводу, прочитав документацию для tornado.web .Application и tornado.web.StaticFilehandler плюс несколько другое SO вопросы. Ничто не подходит для моего случая использования.
yourdomain.com/path/to/foo.json
сyourfilesystem/path/to/bar.json
? Я думаю, вы должны включить это в свой вопрос (т.е. использовать другое имя в примере, не используяfoo.json
как в URL-адресе, так и в файловой системе) - person justhalf   schedule 21.01.2014