説明できる程度にサーバーサイドを学ぶ
ハンズオンなどはネットに転がっているサイトを参考に....
あくまで自己理解のために記事を作成しているため、自分が理解している部分は大幅カット
個人的な目標としては、Flaskを用いてUSBカメラで取得した映像データをFlaskで表示することである
webアプリケーション開発で知っておくべきこと
webアプリケーション開発には2つのやり方がある
方法1:webサーバーにhtmlファイルとpythonスクリプトをアップロードし、レンタルサーバーを借りる
方法2:pythonでwebで動くアプリケーションそのものを記載し、クラウドサービスを利用する
方法1では、webサーバーの管理が利用者側にないため、レンタルサーバーに用意されている機能しか使えない。一方で方法2では、利用者が高い自由度、柔軟なメンテナンスの中で、サーバー管理をすることができる。
pythonにはwebサーバーを簡単に作成できるモジュールがある
http.serverやFlaskモジュール。これらのモジュールを使用することで、簡単にwebサーバーを起動し、「webアプリの原型」を作ることが可能。サーバー側の複雑な設定は必要ない。
- http.server
- Flask
http.serverの限界
http.serverの問題点は頭に入れておく。
- 複数のアクセスがあると途端にHttp.serverの動作は遅くなる
- 基本的にwebサーバーは受け身である
httpサーバーでは、ユーザーからリクエストされた時のみ、レスポンスを返す。必要な情報を拡充したい時は、クライアント側が動く必要がある。
このような問題点があることで、http.serverは試験用でしか利用価値がない。
そこで現れたのが、FlaskやDjangoといったwebフレームワークであり、webアプリケーション開発が容易になり、受け身のシステムを打破した。
pythonの多種多様なモジュールを導入しやすく、サーバーサイドのシステム組み込みが容易になった。
Flask
Flaskとは
しっかりと文章で説明できる程度に頭に入れておく。
OSSのwebフレームワークであり、Djangoと同じ立ち位置。Djangoはwebアプリケーション開発に必要となる機能を全て備えているのに対し、flaskは最低限の機能しか拡充していない。
flaskは必要となる外部モジュールを簡単に追加できるという構想を採用しており、例えば、DBが必要な時は対応したDBモジュールを入れれば良い。必要最小限な機能しかないので、軽量なwebフレームワークである。
テンプレートの考え方
htmlファイルはtemplatesフォルダ内に拡充することを決まりとする。
注意すべき点は、htmlファイルのことをテンプレートファイルと呼ぶことである。
flaskにはJinjaというテンプレートエンジンが用意されており、これはテンプレートを元にhtmlソースコードを生成してくれる。
postとgetの使い分け
GETでフォームを送信した場合、クエリパラメータがURLに追加されて送信される。
POSTはHTTPのボディ部分にフォーム情報が追加される。これはURLが同じであっても同じ結果は得られない。
GETはURLをコピーすれば何度でも同じフォームを送信することができる。かつ、クエリパラメータを変えることで異なるフォームを送信することができる。
これは外部から何度でも自由にフォームを送信できるという怖い点もあり、例えばECサイトにてアカウントの違う人の購入カートを変更できたりすることができる。大袈裟な話だが、、、、
基本用語
クライアント : webサイトにアクセスしてくる相手のこと
ルーティング : アドレスに応じた処理の割り振り
クエリパラメータ : **http://xxxxxxx/?a=xxx&b=yyy**といういうようにURL内で変数定義
GET : アクセスすると予め用意していたコンテンツを返す
POST : フォームなどユーザーが書き込む情報にしたがってgetする情報を更新しなければならない。更新情報を送信することをPOSTと呼ぶ
GETとPOSTの違い
- GET:サーバーから情報を取得する
- POST:サーバーに情報を追加する
- たくさん参考記事があるので調べて下さい
フレームワーク : プログラミングにおいて、アプリケーションプログラム等に必要な一般的な機能が、あらかじめ別に実装されたもの。自分が必要としていない機能も拡充されていることに注意