毎日必ず寝て、夢の中で起こることは忘れましょう。

Make sure to sleep every day and forget what happens in your dreams.

プログラミング教室

Androidアプリをそのままに、従来のAPIを使用し、JSONを導入する。

  • API Gateway:Node.js (.ts)
  • Backend:Python / Java
  • API定義:.yaml(OpenAPI)
  • データ:JSON
  • 旧API: /login.php  ↓(そのまま受信)、 新API: /v2/auth/login(変換)

    if (旧機能) → 旧システム 、if (新機能) → SaaS


    (従来)Android → PHP/ASP → DB

    (SaaS化)Android → API Gateway → SaaS/Microservices → DB/クラウド


  • API Gateway(Node.js / Python / Java)
  • 拡張子例:
    • .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.認証コード受信 を 実装 (ここから先はアプリケーションソフト毎のサンプルコード)


    }

     

    © 2023 後藤広一. All rights reserved. | Privacy Policy | Terms of Service