9

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

猎鹰应用程序是否可以提供静态网页?

4

4 回答 4

14

首先也是最重要的,我不得不说你不想那样做。您应该做的是在您的 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 中的参数,并在您的资源中获取它,以便您的静态资源可以从目录中提供任何请求的文件。

于 2016-01-16T13:23:45.010 回答
14

你应该使用:

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

来自文档的来源

于 2018-01-31T13:08:58.740 回答
8

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

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())
于 2016-03-25T19:02:31.587 回答
1

您是否尝试过https://github.com/kevinisaac/wsgi-static-middleware

是一个静态文件服务中间件,已经封装好与 Falcon 一起使用。

于 2017-08-30T18:52:31.827 回答