在根目录下添加Falcon应用路由

0 投票
2 回答
1574 浏览
提问于 2025-04-18 08:11

我正在写一个Falcon应用程序,用来提供一些网页。现在,我在根目录下有一些js和css文件,分别放在/js和/css文件夹里。这些/js和/css文件夹可以有多个子文件夹,文件可能放在其中的某个子文件夹里。

我想添加一个Falcon应用的路由,这样网页请求

/js/subdir1/subdir2/temp.js
/js/subdir1/temp2.js 

就可以通过同一个响应方法来处理。

但是当我尝试添加一个像这样的路由

app.add_route("/js/{filename}", ResourceClass())

时,请求/js/subdir1/subdir2/temp.js却没有到达响应方法。

我现在的响应方法如下:

class ResourceClass(object):
    def on_get(self, request, response, filename):
        file_path = os.path.join(path_to_js,filename)
        serve_file(response, file_path)

serve_file会创建合适的响应并返回。

我希望文件名能被填充为

"subdir1/subdir2/temp.js" for "/js/subdir1/subdir2/temp.js" and
"subdir1/temp2.js" for "/js/subdir1/temp2.js "

我该如何添加这个路由和响应方法呢?

2 个回答

0

Falcon 1.4.1(或者更早的版本)可以为整个目录提供静态文件服务,并且可以设置一个前缀。

asset_path = "/var/www/html/js/"
js_path = asset_path + "js/"
api.add_static_route('/assets', asset_path)
api.add_static_route('/assets/js', js_path)

..这意味着它会提供任何位于 /var/www/html/js/*.js 这个路径下的文件。

0

如果你在使用Apache这个服务器软件,可以按照下面的方式来设置你的网站:

Alias /js/ /path/to/wsgi/js/

<Directory /path/to/wsgi/js>
    Order deny,allow
    Allow from all
</Directory>

WSGIScriptAlias / /path/to/wsgi/script.py

<Directory /path/to/wsgi>
    <Files script.py>
        Order allow,deny
        Allow from all
    </Files>
</Directory>

重启Apache后,在 http://localhost/js 这个网址下,你就可以访问到你的静态文件了。

撰写回答