我是python的新手,因此是猎鹰。我开始开发一个RESTful API,到目前为止猎鹰是非常棒的。提供静态网页还有一些其他要求,我不想编写应用程序或为此生成服务器。
是否有可能从猎鹰应用程序提供静态网页?
答案 0 :(得分:12)
首先也是最重要的,我不得不说你不想这样做。您应该做的是在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中的参数,并将其放入资源中,这样您的静态资源就可以从目录中提供任何请求的文件。
答案 1 :(得分:10)
您应该使用:
api.add_static_route('/foo', foo_path)
api.add_static_route('/foo/bar', foobar_path)
答案 2 :(得分:6)
您可以更好地控制静态文件的路由,如下所示:
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())
答案 3 :(得分:1)
您是否尝试过https://github.com/kevinisaac/wsgi-static-middleware?
是否已经封装的静态文件服务中间件与Falcon一起使用。