kujirahand / nako3storage

なでしこ3貯蔵庫 - なでしこのプログラムを保存共有できるWebサービス
MIT License
4 stars 1 forks source link

貯蔵庫への永続化用のAPIを提供する #194

Open kujirahand opened 6 months ago

kujirahand commented 6 months ago

貯蔵庫APIとは、貯蔵庫へデータを保存できるAPIです。

概要 - 貯蔵庫APIとは?

ユーザー独自のデータを保存するuser_dbと、アプリ独自のデータを保存するapp_dbの二種類から構成される貯蔵庫のAPIです。

何に使えるの?

user_dbとは?

app_dbとは?

使い方は?

貯蔵庫APIのデモを作成しました。 こちらのデモを確認してください。

最初に以下の宣言を記述すると、貯蔵庫APIが利用可能になります。

# 以下の宣言で便利なライブラリを取り込む
!「https://n3s.nadesi.com/plain/api.nako3」を取り込む。

まずはデモを確認してください。

使えるなでしこの命令

以下のような関数が利用できます。

# --- APPキー ---
●APPキー一覧取得
●(KEYの)APPキー取得
●(KEYにVALUEを)APPキー設定
●(KEYを|KEYの)APPキー削除
# --- APPアイテム ---
●(KEYにVALUEを)APPアイテム追加
●(KEYのOFFSETからLIMITだけ)APPアイテム取得
●(KEYのOFFSETからLIMITだけ)APPアイテム末尾取得
●(KEYのIDを)APPアイテム削除
●(KEYのIDをVALUEに|VALUEへ)APPアイテム更新
# --- USERキー ---
●USERキー一覧取得
●(KEYの)USERキー取得
●(KEYにVALUEを)USERキー設定
●(KEYを|KEYの)USERキー削除
●(KEYを|KEYの)USERキー全削除
# --- USERアイテム ---
●(KEYにVALUEを)USERアイテム追加
●(KEYのOFFSETからLIMITだけ)USERアイテム取得
●(KEYのOFFSETからLIMITだけ)USERアイテム末尾取得
●(KEYのIDを)USERアイテム削除
●(KEYのIDをVALUEに|VALUEへ)USERアイテム更新
# --- その他 ---
●ログイン確認
●ユーザー名取得
●ユーザーID取得
●(user_idの)指定ユーザー取得

利用上の注意

内部的な仕様

以下は、内部的な仕様なので、なでしこユーザーは見なくても大丈夫です。

内部の仕組み

  1. サーバー側でアプリのトークンを生成する
  2. アプリのロード時、セッションにIDに対するトークンを保存する $_SESSION["TOKEN"] = app_id
  3. アプリのロード時、不可視のDOM要素 [div id="api_token"]TOKEN[/div]を差し込むようにする。
  4. アプリ側では、上記トークンをパラメータとして、token=TOKENを与える
  5. サーバー側では、$_SESSION["TOKEN"]からapp_idを取り出して、それぞれのDBに対して読み書きをする

提供するAPIの種類(共通)

[request]
api.php?
  action=api&
  token=(トークン)&
  page=(メソッド名)&
  xxx=xxx

astorage::user --- ユーザーごとの保存領域

KEY - キーバリューストア:

ITEM - アイテムテーブル:

select_items_as_userのlimitは最大30件まで。

astorage::app --- アプリごとの保存領域

KEY - キーバリューストア:

ITEM - アイテムテーブル:

select_items_as_appのlimitは最大30件まで。

kujirahand commented 6 months ago

とりあえず、ベータ版リリースということで、以下で動作を確認できます。 https://n3s.nadesi.com/index.php?page=2782&action=show

kujirahand commented 6 months ago

TODO

kujirahand commented 5 months ago

APPアイテム取得が連続で呼べない問題がある😿

kujirahand commented 4 months ago

app_dbの方、読み取り専用であれば、他のユーザーもアクセスできるようにしたいです。