*

IoT開発(13)
RaspberryPiをIoTゲートウェイにする(VI)
flaskでGET/POSTの受信処理

公開日: : Python, RaspberryPi, 開発

どもです。
このエントリは、以下のエントリの続きです。

IoT開発(6) RaspberryPiをIoTゲートウェイにする(I) VM上に開発環境を構築
IoT開発(7) RaspberryPiをIoTゲートウェイにする(II) VM上の開発環境にWEBサーバーをインストール
IoT開発(8) RaspberryPiをIoTゲートウェイにする(II)-ex MariaDBにPHPからアクセス
IoT開発(9) RaspberryPiをIoTゲートウェイにする(III) MariaDBのセットアップ
IoT開発(10) RaspberryPiをIoTゲートウェイにする(IV) Appサーバーのセットアップ
IoT開発(12) RaspberryPiをIoTゲートウェイにする(V) nginxとuWSGIの連携

前回のエントリで、uWSGIにhttpでアクセスできるようになりました。
そこで今回は、HTTPのGET/POSTメソッドで送信されたデータの、サーバー側での処理について書きます。

1.はじめに:GET?POST?

「GETって何?」、「POSTって何?」となる方もいるかと思います。
それぞれを簡単に説明すると、

  • HTTPのメソッドの中の1つ
  • GETは、クライアントがサーバー/URIからリソースを取り出すためのメソッド。
  • POSTは、クライアントからサーバにデータを送信するためのメソッド。

です。
HTTPのメソッドはこれ以外にもいくつかありますが、今回注目するのは上記の2つです。
そのため今回のエントリでは、特に触れません。

2.GETメソッド送信データの取得

まず、GETメソッドで送信されたデータの取得について書きます。
GETメソッドで送信されたデータは、下記の処理で取得ができます。

「argument_name」には、URIで指定した引数の名前を設定します。
少し具体例を挙げてみます。
仮に「get_method_api」というアドレスに対して、センサーのデータを送信する場合を考えます。
このURIに対して指定する引数は、以下の通りとします。

No. 名前 概要
1. sensor_id データを送信したセンサーのID
2. name 送信データの名前
(「temperature」など
3. value センサーの測定値
4. unit センサーの測定値の単位

上記のデータを送信する場合は、URIを以下のように指定します。

次に、サーバー再度の受信処理です。
受信処理の実装は、下記のようになります。

@routeのmethodに「GET」を指定することで、get_method_apiがGETメソッドに対応していることを示しています。
あとは、最初に示した「request.args.get(‘xxxx’)」の構文で、値を取得しています。
取得した値を、printメソッドなどで表示させると、センサーが送信したデータを受信できていることが確認できます。
なお、この例では「OK」を返していますが、ここでは取得した値に対する処理結果を返します。

3.POSTメソッド送信データの取得

次に、POSTメソッドで送信されたデータの取得について書きます。
POSTメソッドで送信されたデータは、以下の処理で取得ができます。

「argument_name」には、URIで指定した引数の名前を設定します。
GETと同様、「post_method_api」というアドレスに対して、POSTメソッドでセンサーの値を送信する場合を考えます。
ここで、上記URIに対して送信可能なURIは、「get_method_api」と同様とします。
この場合、サーバー側の受信処理の実装は、下記のようになります。

値を取得する処理を「request.form[‘xxx’]」に変更した以外は、GETメソッドの場合と違いはありません。

4.まとめ

今回は、センサーからGET/POSTメソッドで送信されたデータをサーバー側で受け取る処理について書きました。
GET/POSTのいずれの方法であっても、サーバー側の実装に大きな違いはありません。

GETとPOSTのどちらのメソッドを使用するかは、目的に合わせて適宜選択してください。
また、今回書いたのは、あくまで「GET/POSTメソッドのデータを取得するためのサーバー側での処理」です。
受け取った値の処理や返す値(表示するページ情報など)は、それぞれ適切に実装してください。

今回のエントリまでで、センサーから送信されたデータをRaspberryPiで受信することができるようになりました。
あとは受信/蓄積したデータを、サーバーに送信する方法です。
その辺は、折を見て書きます。

ではっ!

関連記事

toppers

C言語でEV3開発(24)-APIの実行時間を測定してみた。

どもです。 今回、以前から気になっていた、開発環境/プラットフォームであるTOPPERS HRP2

記事を読む

toppers

C言語でEV3開発(16)-TOPPERS/HRP2 EV3 で Bluetooth割込み

どもです。 今回は、EV3 の環境をTOPPERS/HRP2 EV3RT で作成したアプリをPC上

記事を読む

eclipse-juno-logo

C言語でEV3開発(2)

どもです。 今回のエントリーの内容は、前回に引き続き「EV3の開発環境の構築」の追記です。

記事を読む

think_about_utest

VisualStudioで実行した単体テストの結果の出力(1)-ファイルへの出力

どもです。 最近、VisualStudio/C#でよく開発しています。 その際に、当然ですが

記事を読む

no image

Windows/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 今回は、Windows/EclipseでRaspberry Piのクロス環境を構築した

記事を読む

raspberry-pi

RaspberryPi起動時にpigpiodがスタートしないようにする

どもです。 これまでpigpioを使用してRaspberryPiからLEDをチカらせる方法など、い

記事を読む

sensor_graph_visualization_eye_catch

センサーの値を見える化する(1)-温度センサ:MDK001の値の見える化

どもです。 ここしばらく、PCツールとかの話が多かったのですが、久方ぶりに組み込み開発のネタで

記事を読む

no image

C言語でEV3開発(12)-opOUTPUT_TIME_POWERコマンド

どもです。 今回のエントリーでは、これまた前回に引き続き、モーターを動かすためのコマンドについて書

記事を読む

think_about_utest

単体テストの効率化を考える(2)-スタブの戻り値

どもです。 「単体テストの効率化について考える」の2回目です。 (1回目はコチラ:単体テスト

記事を読む

think_about_utest

単体テストの効率化を考える(6)-スタブの自動生成ツール

どもです。 「単体テストの効率化について考える」の6回目です。 1回目から5回目まではコチラ

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

arduino_relay_switch_002_ae_g5v_drv_eye_catch
Arduinoでリレースイッチ(2)-AE-G5V-DRV

どもです。 前回の記事では、「フォトカプラリレー」を使用したLチ

tlp222af_001_eye_catch
Arduinoでリレースイッチ(1)-TLP222AF

どもです。 つい先日、やっとのことでリレースイッチを手に入れるこ

c_sharp_eye_catch
外部からMariaDbにアクセスする(2)-C#からMariaDbにアクセスする。

どもです。 前回のエントリで、外部からMariaDbにアクセスす

c_sharp_eye_catch
外部からMariaDbにアクセスする(1)-データベースの設定

どもです。 今回は、Linux上のMariaDbにWindows

think_about_utest
middle_unit
最小…よりも(ほんの)少し大きいテストフレームワーク

どもです。 今回は、単体テストのフレームワークについて書きます。

→もっと見る

PAGE TOP ↑