Help us understand the problem. What is going on with this article?

APEX超入門チュートリアル Part 3 - センサーデバイスからデータを受け取るIoTバックエンドを構築する

More than 3 years have passed since last update.

Raspberry Piなどの各種センサーデバイスから送信される情報を受け取るIoTバックエンドを構築します。今回は土壌湿度情報を保存すると想定して進めていきます。

表を作成する

HATAKE_LOGという名前の表を作成します。今回必要となる表はこれだけです。この表にセンサーデバイスから送信される情報を順次保存していきます。

SQLワークショップ > オブジェクト・ブラウザを開き、画面右上の+プルダウンメニューから表を選択します。
スクリーンショット_2016-06-02_9_04_37.png

スクリーンショット_2016-06-02_9_06_26.png

スクリーンショット 2016-06-02 13.53.57.png

下記のように入力して次ボタンをクリックします。

表名 : HATAKE_LOG

列名 タイプ 精度 スケール
ID NUMBER
TIMESTAMP NUMBER
MOISTURE NUMBER

主キー

  • 新しい順序から移入
  • 主キー制約名:HATAKE_LOG_PK
  • 主キー:ID(Number)
  • 順序名:HATAKE_LOG_SEQ

外部キー

デフォルトのまま次ボタンをクリックします。

制約

デフォルトのまま次ボタンをクリックします。

確認

表を作成ボタンをクリックします。


これで表が作成されました。

REST APIを作成する

次にこのデータベースにアクセスするためのREST APIを作成します。
まず最初におこなうのがRESTfulモジュールの作成です。

RESTfulモジュールは複数のREST APIをまとめておくための入れ物です。通常はアプリ一つにつき一つのRESTfulモジュールを作るようなイメージです。まずこの入れ物を作成します。

SQLワークショップ > RESTfulサービス > 作成ボタンをクリックします。
スクリーンショット_2016-06-02_9_31_38.png
スクリーンショット_2016-06-02_9_34_01.png
スクリーンショット 2016-06-02 13.59.43.png

下記のように入力してモジュールの作成ボタンをクリックします。(下記にない項目はデフォルトのまま)

  • 名前 : 畑
  • URI接頭辞 : hatake/

次にテンプレートを作成します。これはAPIのURIを設定するためのものです。

左サイドバーの+テンプレートの作成をクリックします。
スクリーンショット_2016-07-06_13_59_19.png
スクリーンショット 2016-07-06 14.06.24.png

下記のように入力して作成ボタンをクリックします。(下記にない項目はデフォルトのまま)

  • URIテンプレート : log

次にハンドラーを作成します。ハンドラはテンプレート毎に設定され、そのAPIにアクセスがあった場合に実行するアクションを設定します。

左サイドバーで作成したテンプレート配下の+ハンドラの作成をクリックします。
スクリーンショット_2016-07-06_14_00_27.png
スクリーンショット 2016-07-06 14.04.07.png

下記のように入力して作成ボタンをクリックします。(下記にない項目はデフォルトのまま)

  • 方法 : POST
  • ソース・タイプ : PL/SQL
  • セキュア・アクセスが必要:いいえ
begin
    insert into hatake_log (timestamp, moisture) values (:timestamp, :moisture);
end;

これで土壌湿度情報を受け取るためのREST APIが作成されました。

あともう一つ、保存したデータを取得するAPIも作っておきましょう。

左サイドバーの+テンプレートの作成をクリックします。
スクリーンショット_2016-07-06_15_59_13.png
スクリーンショット 2016-07-06 15.59.23.png

下記のように入力して作成ボタンをクリックします。(下記にない項目はデフォルトのまま)

  • URIテンプレート : log/list

ハンドラーを作成します。左サイドバーで作成したテンプレート配下の+ハンドラの作成をクリックします。
スクリーンショット_2016-07-06_15_59_42.png
スクリーンショット 2016-07-06 15.59.52.png

下記のように入力して作成ボタンをクリックします。(下記にない項目はデフォルトのまま)

  • 方法 : GET
  • ソース・タイプ : 問い合わせ
  • 書式 : JSON
  • セキュア・アクセスが必要 : いいえ
select * from hatake_log

それでは早速テストしてみましょう。REST APIのテストにはapigeeを利用します。
アカウントをお持ちでないかたはまずサインアップをおこなってください。

アカウントを作成したらログインし、API Consoleを起動します。
スクリーンショット_2016-07-06_14_24_22.png

apigeeは様々な有名どころのAPIアクセスをライブラリとして提供しています。
今回は今作成したばかりのカスタムREST APIにアクセスしますのでOhter (generic)を選択します。
スクリーンショット_2016-07-06_14_27_06.png
スクリーンショット 2016-07-06 14.29.13.png

このコンソールではHTTPメソッドとURL、それにHTTP HeaderとBodyを設定することができ、Sendボタンを押すことでリクエスト(APIコール)が投げられます。

土壌湿度を保存するAPIはHTTPメソッドがPOST、URLがhttps://apex.oracle.com/pls/apex/あなたのワークスペース名/hatake/log となり、Bodyに送信したいデータ(timestampとmoisture)を含めます。

このリクエストを送信するには、下記のように設定してSendボタンをクリックします。

Parameter Value
timestamp 1499886000
moisture 50

成功すると右下のRequest欄にHTTP1.1 200 OKが表示さます。
スクリーンショット 2016-07-06 17.53.26.png

そして実際にデータが保存されているかどうか確認するために、データを取得するAPIもコールしてみましょう。下記のように設定を変更し、Sendボタンをクリックします。

こちらも成功すると右下のRequest欄にHTTP1.1 200 OKが表示され、その出力をみていくとJSON形式で保存されたデータを取得できているはずです。
スクリーンショット 2016-07-06 17.52.38.png

次のステップ

今回学んだ知識をベースに、今後本格的なサービスを開発するにあたり、下記のようなトピックを学んでください。

  • 複数のデータを一度のAPIコールで保存する。
  • ハンドラーで必要となるPL/SQLについて。
  • APIを保護する。(認証・認可)。
  • Database as a Serviceで独自SSL証明書を使ってHTTPS通信を有効化する。
  • データを可視化するチャートなどのUIの開発。

知っておくと便利なAutoRESTについて

スキーマサービスやapex.oracle.comではサポートされていませんが、Database as a ServiceではAutoRESTが利用できます。AutoRESTとは、REST APIを自分でわざわざ作成せずとも、テーブルに対する基本的な操作をREST APIとして利用できるようにする機能です。

例えば、とあるテーブルに1レコードを挿入する、1レコード取得する、検索結果を取得する、レコードを更新する・削除する、複数レコードをロードするといった処理がAutoRESTで実現できます。

設定はスキーマごとに有効化をおこなうだけです。詳しくはこちらの記事で紹介されています。

nkjm
LINE株式会社のDeveloper Advocate
http://www.nkjmkzk.net
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした