フラスコ内のHTTPリクエストとレスポンス

参考:「フラスコのウェブ開発。」

グローバル変数のフラスココンテキスト

一時的に使用特定のオブジェクトのフラスココンテキストは、グローバルにアクセス可能になります。:フラスコに2つのコンテキストがあるアプリケーション・コンテキスト要求コンテキストが

変数名 コンテキスト 説明
CURRENT_APP アプリケーション・コンテキスト 現在のアプリケーションの応用例
グラム アプリケーション・コンテキスト 処理要求は、各要求は、オブジェクトをリセットするための一時記憶としてのオブジェクト
要求 要求コンテキスト クライアントによって送信されたHTTPリクエストのRequestオブジェクトカプセル化コンテンツ
セッション 要求コンテキスト ユーザーセッションは、辞書には、ストレージ要求値との間で「記憶」することが必要です

リクエストオブジェクト

コンテキスト変数開放要求オブジェクトによってフラスコ要求は、このオブジェクトは、すべてのクライアントから送信されたHTTPリクエストの情報が含まれています。共通の属性とメソッドがあります。

プロパティまたはメソッド 説明
辞書、提出ストア要求にすべてのフォームフィールド(ポストリクエスト)
引数 渡されたURLのクエリ文字列を格納するための辞書のすべてのパラメータ(リクエストを取得)
辞書は、コレクションとargsを形成します
クッキー すべてのクッキー辞書、ストレージ要求
ヘッダ すべてのHTTPヘッダ辞書、ストレージ要求
ファイル 辞書には、アップロードしたすべてのファイルには、要求を保存します
get_data() 緩衝体に要求されたデータを返します。
get_json() これは、体を得るための要求を解析備え、辞書を返すJSON
設計図 処理要求の青写真のフラスコ名
終点 エンドポイント・ルーティングの名前として要求フラスコビュー関数名を処理するエンドポイントの名前
方法 例えばGETまたはPOSTのようなHTTPリクエストの方法
スキーム URLメソッド(HTTPまたはHTTPS)
ts_secure セキュアな接続を介して真の送信要求を返します(HTTPS)(注:これは、元の本方法で、エラー)
ホスト 要求定義のホスト名、ポート番号を含むことができます
URLのパス部分
クエリ文字列 URLのクエリ文字列部分は、元のバイナリ値に戻ります
フルパス URLとクエリ文字列セクションのパス
URL 完全なURLは、クライアントから要求されました
BASE_URL URL、ないクエリ文字列セクションでは
REMOTE_ADDR クライアントのIPアドレス
およそ 元の要求辞書のWSGI環境

コードは示してい

from flask import Flask, request

app = Flask(__name__)


@app.route('/index/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':  # post参数{'name': 'flask'}
        print(request.form.get('name'))  # flask
        return 'post succeed'
    elif request.method == 'GET':   # 以url http://127.0.0.1:5000/index/?name=flask 为例
        print(request.args.get('name'))  # flask
        print(request.values.get('name'))  # flask
        print(request.cookies)           # {}
        print(request.headers.get('User-Agent'))  # Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0
        print(request.get_data())        # b''
        print(request.get_json())        # None
        print(request.blueprint)         # None
        print(request.endpoint)          # index
        print(request.scheme)            # http
        print(request.is_secure)         # False
        print(request.host)              # 127.0.0.1:5000
        print(request.path)              # /index/
        print(request.query_string)      # b'name=flask'
        print(request.full_path)         # /index/?name=flask
        print(request.url)               # http://127.0.0.1:5000/index/?name=flask
        print(request.base_url)          # http://127.0.0.1:5000/index/
        print(request.remote_addr)       # 127.0.0.1
        print(request.environ)
        return 'get succeed'


if __name__ == '__main__':
    app.run(debug=True)

レスポンスオブジェクト

一般的な応答:

return  "字符串"
return render_template # 返回模板
return redirect()

あなたは、値のいくつかのタプルを返すようにしたくない場合は、ビューmake_response機能で使用することができる()関数は、レスポンスオブジェクトを返します。

一般的なレスポンスオブジェクトのプロパティとメソッドは以下のとおりです。

プロパティまたはメソッド 説明
STATUS_CODE デジタルHTTPステータスコード
ヘッダ 辞書のようなオブジェクトに送信されるすべての応答ヘッダを含ま
set_cookie() に応じて、クッキーを追加します。
delete_cookie() クッキーを削除するには
CONTENT_LENGTH 本体の長さに応じて
CONTENT_TYPE ボディのメディアタイプ
set_data() に応じて設定された文字列またはバイトの値
get_data() レスポンスボディをゲット

そして、リダイレクトの特殊なタイプ。

from flask import Flask, request, make_response

app = Flask(__name__)


@app.route('/index/')
def index():
    data = {
        'msg': 'this document carries a cookie!'
    }
    response = make_response(data)
    response.set_cookie('answer', '42')
    response.headers['Content-Length'] = 100  # 默认为返回数据长度,可修改
    response.headers['token'] = 'asd343asd'  # 添加编辑header信息
    print(request.cookies.get('answer'))     # 第二次请求时会返回 42
    return response


if __name__ == '__main__':
    app.run(debug=True)

おすすめ

転載: www.cnblogs.com/rendan/p/11886447.html