Python3 Bottleフレームワーク入門(その2)- リクエストメソッド
2017/08/24
2019/12/06
タグ: Bottle, Python, メソッド, ルーティング
今回の記事では、Bottleのリクエストメソッドについて書きたいと思います。
リクエストメソッドってなんだろう!?と思う方もいるでしょう。WEBブラウザーでURLを指定して表示するのはGETというリクエストメソッドです。逆にコンテンツ側からサーバへ送信するような入力フォームのページはPOSTと言います。この2つを取りえず覚えて置くと良いでしょう。
これまでのプログラムの中で@app.route(URLパス)と書いていたのはデフォルトでメソッドを指定しなければGET処理のルーティングでした。Bottleではパラメータでメソッドを指定してルーティングさせる他にもっと簡潔な書き方があります。 以下に示す書き方はどれも同じ処理の書き方です。
1 2 3 4 5 6 7 8 |
#POSTの場合 @route('/login', method='POST') @post('/login') #GETの場合 @route('/login', method='GET') @route('/login') @get('/login') |
メソッドを意識してルーティングするなら下記の書き方がわかりやすくて良いですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
from bottle import get, post, request # or route @get('/login') # or @route('/login') def login(): return ''' <form action="/login" method="post"> Username: <input name="username" type="text" /> Password: <input name="password" type="password" /> <input value="Login" type="submit" /> </form> ''' @post('/login') # or @route('/login', method='POST') def do_login(): username = request.forms.get('username') password = request.forms.get('password') if check_login(username, password): return "<p>Your login information was correct.</p>" else: return "<p>Login failed.</p>" |
デコレータは以下のように重ね合わせも可能だ。ログインの場合などはログインする前とログイン認証、ログイン認証した後が考えられる。ユーザ関数の中のどのメソッドで呼び出されたのか判定しロジックを充ててゆくように記述する。判定はクッキーやセッションで認証しているか否かでわかるだろう。
1 2 3 4 5 |
@get('/login') @post('/login') @view('login') def login_process(): 処理は省略 |
メソッドのデコレータはget(), post(), put(), delete() or patch()が用意されています。
- Python Bottle Framework入門 全13回
- 1.基礎編サーバ起動
- 2.リクエストメソッド
- 3.ORM Peewee (MySQL)
- 4.ORM Peewee CRUD
- 5.Cookie And Session
- 6.Abort and Redirect
- 7.マルチスレッドWEBサーバ
- 8.デーモン化
- 9.Json
- 10.WSGI on SSL
- 11.Apache連携起動(外部WSGI) SSL接続
- 12.Apache連携起動(ReverseProxy)SSL接続
- 13.hprox連携起動(ReverseProxy)SSL接続&HTTP2対応