私はpythonが初めてなので、ファルコンです。私は RESTful API の開発を開始しましたが、これまでのところ falcon は最適です。静的 Web ページを提供するには、他にもいくつかの要件があり、そのためのアプリを作成したり、サーバーを生成したりしたくありません。
falcon アプリから静的 Web ページを提供することは可能ですか?
私はpythonが初めてなので、ファルコンです。私は RESTful API の開発を開始しましたが、これまでのところ falcon は最適です。静的 Web ページを提供するには、他にもいくつかの要件があり、そのためのアプリを作成したり、サーバーを生成したりしたくありません。
falcon アプリから静的 Web ページを提供することは可能ですか?
最初に、そして最も重要なこととして、あなたはそうしたくないと言わなければなりません。すべきことは、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())