プログラミング教室
Androidアプリをそのままに、従来のAPIを使用し、JSONを導入する。
旧API: /login.php ↓(そのまま受信)、 新API: /v2/auth/login(変換)
if (旧機能) → 旧システム 、if (新機能) → SaaS
(従来)Android → PHP/ASP → DB
(SaaS化)Android → API Gateway → SaaS/Microservices → DB/クラウド
- .js / .ts
- .py
- .yaml(API定義)
二段階認証付きログインUI(メール認証、SMS)を同期するAPI Gatewayのサンプルコードを開発してみる
スレッドのインスタンスを同期オブジェクトで同期して、
1.「ログイン」サブミット
2.認証コード受信
3.二段階認証
4.UIのURL作成
5.Webページ画面遷移
1.から5.の順番にスレッドを動かす。
イメージとしては、
////////////////////////////////////////////////
//スレッド処理実装用のインターフェース
interface syncMethodInterface {
public synchronized void syncMethod();
}
////////////////////////////////////////////////
//スレッドインスタンスクラス
public class ObjectLockTest extends Thread implements syncMethodInterface {
//スレッドを同期するためのオブジェクトインスタンス
static Object 同期オブジェクト = new Object(); //スレッドのインスタンスはオブジェクトにはならない事に注意!(※1)
//main処理(javaコマンドでクラスファイル指定)
static public void main(String args[]){
LoginSubmitThread loginSubmit1 = new LoginSubmitThread();
loginSubmit1 .start(); 1.「ログイン」サブミット //スレッドのインスタンスはオブジェクトにはならない事に注意!(※1)
AuthcodeResponseThread authcodeResponse2 = new AuthcodeResponseThread ();
authcodeResponse2 .start(); 2.認証コード受信 //スレッドのインスタンスはオブジェクトにはならない事に注意!(※1)
以下同様にする。
3.二段階認証
4.UIのURL作成
5.Webページ画面遷移
}
public void run(){
this.syncMethod(同期オブジェクト );
}
//スレッドインスタンスで同期して処理されるメソッド
private synchronized void syncMethod(同期オブジェクト ){
synchronized(同期オブジェクト){
this.syncMethod();
}
//スレッド処理の実装はオーバーライドする
public synchronized void syncMethod(){
//nop 何もしていないから実装しないとダメ。
}
}
////////////////////////////////////////////////
public class LoginSubmitThread extends ObjectLockTest implements syncMethodInterface {
public synchronized void syncMethod(){
//1.「ログイン」サブミット を 実装 (ここから先はアプリケーションソフト毎のサンプルコード)
}
}
////////////////////////////////////////////////
AuthcodeResponseThread extends ObjectLockTest implements syncMethodInterface {
public synchronized void syncMethod(){
//2.認証コード受信 を 実装 (ここから先はアプリケーションソフト毎のサンプルコード)
}
}
