如何从猎鹰应用程序提供静态网页?

How to serve a static webpage from falcon application?

我是 python 的新手,因此也是 falcon 的新手。我开始开发 RESTful API 并且 falcon 到目前为止非常适合它。提供静态网页还有一些其他要求,我不想为此编写应用程序或生成服务器。

是否可以从 falcon 应用程序提供静态网页?

首先也是最重要的一点,我不得不说你不想那样做。你应该做的是在你的 Falcon 应用程序之上有一个 nginx 服务器,并直接从 nginx 提供任何静态文件(并将 API 调用重定向到 Falcon)。

也就是说,您可以轻松地从 Falcon 提供静态文件。这是您要查找的代码:

import falcon


class StaticResource(object):
    def on_get(self, req, resp):
        resp.status = falcon.HTTP_200
        resp.content_type = 'text/html'
        with open('index.html', 'r') as f:
            resp.body = f.read()

app = falcon.API()
app.add_route('/', StaticResource())

您可能希望将文件名设置为 url 中的参数,并在您的资源中获取它,这样您的静态资源就可以为目录中的任何请求文件提供服务。

您可以像这样更好地控制静态文件的路由:

import falcon
class StaticResource(object):
    def on_get(self, req, resp, filename):
        # do some sanity check on the filename
        resp.status = falcon.HTTP_200
        resp.content_type = 'appropriate/content-type'
        with open(filename, 'r') as f:
            resp.body = f.read()


app = falcon.API()
app.add_route('/static/{filename}', StaticResource())

你应该使用:

api.add_static_route('/foo', foo_path)
api.add_static_route('/foo/bar', foobar_path)

Source from documentation