[Python_Flask] GET/POSTメソッドを考えてみた

Flask
スポンサーリンク

こんにちは。

Fraskでアプリを作ってたらメソッドのGET/POSTが必要になったので、どのような働きをするのか調べて記事にしました。

この記事が誰かの役に立ったら幸いです。

スポンサーリンク

GET/POSTはHTTPのメソッド

GET/POSTはHTTPのメソッドです。
まずは、HTTPが何か説明したいと思います。

HTTPというプロトコル

クライアント(ブラウザ)とWebサーバーがやり取りするメッセージの内容や手順を定めたものです。
一言で言えば、Webサーバーとの通信プロトコルです。

HTTPとメソッドの関係

HTTPプロトコルに沿って、クライアント(ブラウザ)からサーバに向けて陸セストのメッセージを送るのですが、メッセージの中には、「何を」「どうしたい」のかが書いてあります。

この「どうしたい」に相当するものをメソッドと呼んでおり、つまり、GET/POSTはサーバーに「どうしたい」を指示するものだということです。

ちなみに、「何を」に相当するものをURI(Uniform Resource Identifier)と呼び、詳しく調べると長くなりそうなので本記事では飛ばします。

GETとPOSTの役割

GET

Webサーバーにアクセスして、ページのデータを読み出すときに使うのがGETです(なのでよく使用される)

GETを書き、URIに/***.htmのようなページデータを格納したファイルの名前を書くと、/***.htmlを読み出す意味になります。
このメッセージがサーバーに届くと、サーバーは/***.htmlというファイルを開いて、取り出したデータをレスポンス・メッセージの中に格納してクライアント(ブラウザ)に送り返し、ブラウザーが画面表示します。

概要

URIで指定した情報を取り出す。
ファイルの場合、そのファイルの中身を送り返す。
プログラムの場合は、そのプログラムの出力データをそのまま返送する。

POST

フォーム(Webのページの中にある、テキスト入力欄やチェック・ボックスなどが表示された部分)にデータを記入してWebサーバーに送信する場合に使用します。ネットショッピングで住所や名前を記入したり、アンケートに答えたり、といった部分がフォームです。

POSTを使用する場合、URIにはWebサーバー内で動作するアプリケーションプログラム(注文データを処理したり、アンケートのデータを処理するプログラム)のファイル名を書きます。

そして、リクエストメッセージの中には、メソッドとURIに加えて、プログラムやスクリプトに渡すデータも書きます(そのデータは、ユーザーが入力した値のことです)。

このメッセージがサーバに届いたら、サーバーはURIで指定されたプログラムにメッセージに記載されているデータを渡します。

そして、そのプログラムが出力するデータを受け取って、メッセージに格納してクライアント(ブラウザ)に折り返します。

概要

クライアント(ブラウザ)からサーバーにデータを送信する。
フォームに入力したデータを送信する場合などに使う。

GETとPOSTを使用してアプリを作ってみる

実際に、GETとPOSTを使用してアプリを作ってみました。
フレームワークにはPythonのFraskを使用します。

スクリプト

from flask import Flask, render_template, request

app = Flask(name)

@app.route(‘/’, methods=[‘GET’])
def index():
return render_template(‘index.html’, \
title=”Welcome to Rope_Blog”,\
message=”Who are you?”)

@app.route(‘/’, methods=[‘POST’])
def form():
field = request.form[‘field’]
return render_template(‘index.html’,\
title=”Sample answer”,\
message=”Hello %s-san” % field)

if name == ‘main‘:
app.debug=True
app.run()

@app.route(‘/’. methods=[‘GET’])

GETアクセスした時、関数indexを読み出すようにしています。

@app.routeの引数にmethodsを用意し、関数indexではGETのみ受け付けます。

まず、↓のように表示しています。

@app.route(‘/’.methods=[‘POST’])

関数formではPOSTの処理のみ実行できようにしています。
これに加えて、「request」というオブジェクトを利用します。
そして、以下のようにして、入力値=fieldの値を変数にして取り出しています。

field = request.form[‘field’]

関数formは、「キーを指定してその値を取り出す」ということができるようになっています。

名前を入力して、submitを押すと

入力した値を受け取り、表示することができました。

HTMLとCSS

参考にHTMLとCSSも載せておきます。

HTML

<!doctype html><html lang=”ja”>    
<head>        
<title>Index </title>            
<meta charse=”utf8″/>           
<link rel=”stylesheet”            
href=”{{url_for(‘static’,filename=’style.css’)}}”>    
</head></html><body>    
<div class=”test”>        
<span class=”target”>            
<h1>{{title}}</h1>               
 <p>{{message}}</p>                
<form method=”post” action=”/”>                   
 <input type=”text” name=”field” style=”width:200px; height:50px; font-size:20pt”>                    
<input type=”submit”value =”submit” style=”width:200px; height:50px; font-size:20pt”>                   
</form></span> </dvi></body></hmtl>

CSS

html,body {height:100%;}

div.test{
display:table;
width:100%;
height:100%;
background-color:rgb(135, 219, 252);
text-align:center;
}
div.test .target{
display:table-cell;
vertical-align:middle;
}

h1 {
color: rgb(41, 61, 245);
font-size: 42pt;
margin:0px;
}
p{
font-size:28pt;
}

コメント

タイトルとURLをコピーしました