前回の記事を参考に
index.htmlファイルを修正して遊びます。
拡張子はHTMLファイルですので、「.html」になります。
この際、index.htmlを保存するディレクトリはflask_sample.pyと同じ階層であることに注意してください。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>初めてのFlaskアプリケーション</title>
</head>
<body>
<h1>Flask<h1>
<h1>解析ソフト</h1>
<h2>電気</h2>
<p>写真はある</p>
<h2>マーカー</h2>
<p>電気のマーカーが必要</p>
<h2>輝度</h2>
<p>電気の輝度が必要</p>
</body>
</html>
localhost:8000にアクセス
表示されればOKです!!!
localhostとは
ネットワークに接続しているIPアドレスがグローバルIPアドレス、ネットワークに接続していないIPアドレスがプライベースIPアドレスです
localhost(127.0.0.1)はプライベートIPアドレスに属します
ブラウザからlocalhostにアクセスすることがどういったことなのか
localhostにアクセスするということは、自分のパソコンにインストールされたブラウザから
自分のパソコンにインストールされたウェブサーバーにアクセスしているということです
localhostにアクセス☛自分のパソコンのウェブサーバーにアクセスするということ
ルーティングとは
適切なネットワークへデータを 転送する処理を、ルーティング(経路制御)と言いますが
今回の
ルーティングとは、URLとFlaskの処理を対応づけることで、URLと関数を紐付けることが出来ます
詳しく説明すると
リクエスト先のURL(Uniform Resource Locator)とは、Webサイトやファイルなどのインターネット上での場所・情報
と
実際に処理する関数
を紐づける作業のことを指します
Flaskでは、
関数の先頭にデコーダー(暗号化されたデータを復号する)と呼ばれる関数@app.route()を追加することで
ルート(経路) を追加できます
flask_sample.pyの全体像は次のようになります
import os
from flask import Flask, url_for
app = Flask(__name__)
# ルーティング
@app.route("/hello")
def hello_world():
return "Hello world"
@app.route("/")
def index():
return url_for("show_user_profile", username="ai_academy")
@app.route("/user/<username>")
def show_user_profile(username):
return "UserName: " + str(username)
@app.route("/post/<int:post_id>")
def show_post(post_id):
return "Post" + str(post_id)
if __name__ == "__main__":
app.run(port=8000, debug=True)
ループバックアドレス
127.0.0.1はループバックアドレスの一つであり、
同時に127.0.0.1に対応する仮想的なネットワーク・インターフェースを表します
何もrouting設定しなかった場合
何もrouting設定しなかった場合、show_user_profile()という16行目で定義した関数が走ります。
引数では、username=”ai_academy”が渡されます 表示は以下で確認できます
16行目で定義した関数は以下となります
@app.route("/")
def index():
return url_for("show_user_profile", username="ai_academy")
引数 username="ai_academy" の値が 表示されるのを確認できました
引数 username="ai_like_taichi" の値に変えたら表示も変わることが確認できます
@app.route("/")
def index():
return url_for("show_user_profile", username="ai_like_taichi")
routing でusernameを返す場合
ここでURLの中にある、AIの部分を変えてみて 挙動を確認することができます
@app.route("/user/<username>")
def show_user_profile(username):
return "UserName: " + str(username)
http://127.0.0.1:8000/user/AI
☛ UserName: AI と表示されます
http://127.0.0.1:8000/user/AI_check
☛ UserName: AI_check と表示されます
routing でusernameを返す場合
ブラウザで次のURLにアクセスすると"Hello world"が出力されます
@app.route("/hello")
def hello_world():
return "Hello world"
型を指定したURL参照
http://127.0.0.1:8000/post/11111
☛Post11111と表示されます
@app.route("/post/<int:post_id>")
def show_post(post_id):
return "Post" + str(post_id)
HTTPリクエストの通信形式「POST」と「GET」の違いについて
HTTPリクエストの通信形式「POST」と「GET」の違いについて以下に示します
GET
「GET」は、URL末尾にリクエストパラメータと呼ばれる識別子が追加される形で送信されます
そのため、送信時のURLからどのような内容が送られているのかが目視で確認できます
断片的な情報を送る場合には適しているといえるでしょう
POST
「POST」は、データ内に含まれた形で送信されます
そのため送信時のURLには表示されず、ユーザーからは目視で確認できない仕組みです
文字数の制限が「GET」よりも緩いので、機密性のある長文を送る場合に適しています
以上の違いから、重要な情報や機密性のある長文を送る際には、「GET」ではなく「POST」を利用するのが一般的です
しかしながら、「POST」であっても標準的に暗号化されているデータの形式にはならず、開発者向けのツールを使用すると内容は確認できるため、実際の運用時にはセキュリティ対策が別途必要といえるでしょう