Help us understand the problem. What is going on with this article?

SimpleHTTPServerの次の一歩としてFlaskを使う

More than 1 year has passed since last update.

手元で実験のためにWebアプリのちょこっとしたプロトタイプを作るって時に、HTMLやCSSやJSなどを静的に配信したいだけだったら

python -mSimpleHTTPServer

が楽ちんだということはだいぶ知名度が上がってきたみたいだけど、「あ、ちょっとデータを保存したい」とか思った時には静的配信だけだと力不足なんだよね。(GETパラメータに積んでログに残すという力技は除く)

で、そういうシチュエーションになったので僕はFlaskで1ポモドーロ(25分)くらいで実装したんだけど、ふとFacebookを見たら似たようなシチュエーションでSocket使うとか言ってる人が居たのでこれはブログに書いておくべきことかーと思ったのです。

フレームワーク習得にかかる時間を大きく見積もり過ぎだよ。とりあえず25分間Quickstartをやってはどうか。Socketでサーバを実装するのに比べたら学習に掛かった時間はすぐにペイする。 http://flask.pocoo.org/docs/quickstart/

僕が実際に25分で実装したのがこちら: https://gist.github.com/nishio/be5b5071a8c8fb94836b

Hello worldをコピペするところから始めたんで関数名に痕跡が残っているし、printも消してないけど、出来たての汚いプロトタイプってのはこんなもん。

特定ディレクトリ以下を静的配信するのはこの3行

    @app.route('/collecting/<path:filename>')
    def send_foo(filename):
        return send_from_directory('../collecting', filename)

特定URLへのPOSTを保存するのがこの4行。ちなみに1人で低頻度しか使わないのでデータベースいらないやとファイルに保存している。

    @app.route('/api/save/<filename>', methods=['POST'])
    def save(filename):
        file(filename, 'w').write(request.form['data'])
        return 'ok'

あと、Hello worldではdebugオプションがついていないけど、これをつけておくと500の時とかにスタックトレースとかが見れるし、スタックトレースの各フレームで対話的にコードを実行できるので原因を調べるのにも便利。

    app.run(debug=True)

プロトタイプを作る人にとっては、Flaskの学習に25分投資するのはお得な賭けだと思うよ。

追記: あ、書き忘れたけどクライアントサイドはjQueryを使っていて、このAPIにデータを送るのはこんな感じ:

    $.post('/api/save/hoge', {'data': 'datadatadata'})
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした