API アーキテクチャ
各 API は、以下のコンポーネントで構成されます。
API インタフェース
サービスインタフェースとは、サービスを表わす Java インタフェースです。
その名前はサービス生成で入力したサービスの名前で決定されます。
サービスインタフェースには、入力クラスを取得し、出力クラスを返すメソッドが含まれます。このメソッドは、org.openlegacy.annotations.services.ServiceMethod
でアノテーション(注釈)が付与されます。
REST サービスプロジェクトでは、サービスインタフェースには、Swagger ページの自動生成に必要な追加 io.swagger
アノテーション(注釈)が含まれます。
SOAP サービスプロジェクトでは、サービスメソッドに追加 javax.jws.WebMethod
アノテーション(注釈)が Web サービス定義用のその他の javax.jws
アノテーション(注釈)とともに含まれます。
入力および出力クラスは、サービスインタフェースの内部クラスとして宣言された単純な POJO です。
これらの入力および出力クラスには、サービス生成中に選択された入力および出力によって決定されたサービスの入力および出力が含まれます。
API 実装
サービス実装とは、サービスインタフェースを実装する Java クラスです。
その名前は、「Impl」を追加してサービス生成で入力したサービスの名前で決定されます。
サービス実装には、サービスインタフェースからのサービスメソッドの実装が含まれます。つまり、インタフェースで定義された入力クラスのインスタンスを取得し、実装内で出力クラスのインスタンスを返す必要があります。このメソッドには、org.openlegacy.annotations.services.Service
アノテーション(注釈)が付与されます。
SOAP サービスプロジェクトでは、サービスメソッドには Web サービスの定義に必要な追加 javax.jws.WebMethod アノテーション(注釈)が含まれます。
サービス実装クラスには、サービス使用メカニズムに必要な serviceLogger の注入とセッション/sessionFactory が含まれます。
サービスを実行するたびに新しい接続を使用する場合は、ホストへの新しい接続ですでに初期化された新しいセッションが注入されます。この接続はメソッド実装の最後に切断されます。
サービスが接続プールを使用する場合は、sessionFactory が注入され、メソッドの実装でセッションはそこからプルされます。メソッド実装の最後で、セッションはプールに返されます。
重要
セッションおよび sessionFactories を言及する場合は、プロジェクトバックエンドに応じて、その実装の 1 つにできます(TerminalSession/TerminalSessionFactory、 RpcSession/RpcSessionFactory および DbSession/DbSessionFactory)。
サービスのロジックは、try-catch ブロックのメソッド実装内で記述されます。デフォルトで、新しく生成されたサービスで生成されたロジックには、以下のステップが含まれます。
入力クラスおよびエンティティの Getters および Setters を使用して、入力からエンティティフィールドを設定します。
(クラスのトップに注入またはプールから検索した)セッションを使用して、エンティティのデフォルトアクションを実行し、ホストからレスポンスを取り出します。
入力クラスおよびエンティティの Getters および Setters を使用して、エンティティから出力フィールドを設定します。
結果として出力クラスを返します。
Catch および Try ステートメントの最終ブロックで、サービスデータをサービスロガーに記述し、最後にセッションを切断またはセッションをプールに返します(サービス生成ダイアログで選択したオプションに従って)。
新しいサービスで生成されたこのデフォルトコードは、簡単に変更して、Java コードを記述してサービス実装にロジックを追加し、必要なレスポンスを返します。
API コントローラ
コントローラとは、HTTP リクエストをキャッチし、サービスを呼び出すコンポーネントです。
SOAP サービスと REST サービスでは定義が異なります。
SOAP サービスでは、コントローラは Spring および javax.jws アノテーション(注釈)
によってロードされ、開発者に対して透過的です。
REST サービスでは、コントローラは Spring REST コントローラとしてサービス生成で自動的に生成され、SOAP サービスとは対照的に、そのコードは編集可能です。
REST サービスプロジェクトで、コントローラを編集するとサービスの URL、HTTP メソッド、リクエストおよびレスポンスの媒体タイプ、その他のサービスの REST 特性に関連する構成を変更できます。
コントローラクラス内には、このメソッド(GET、POST、PUT、DELETE…)を呼び出すことで HTTP メソッドを決定する Spring アノテーション(注釈)が付与されたメソッドがあります。
コントローラは HTTP リクエストから受け取るパラメータおよび(パス/クエリ/本文/ヘッダー…で)受け取る方法を定義します。
パラメータを受信後、コントローラはサービスインタフェースからの入力クラスのインスタンスを作成し、それをパスします。サービスはこのメソッドを呼び出してサービスを使用します。サービスは Spring を使用して、サービス実装クラスがこのサービスの実装として定義されるアプリケーションコンテキスト内で、コントローラに注入されます。メソッドを呼び出すとレスポンスとして出力クラスを返し、コントローラはレスポンスとしてステータス 200 で HTTP リクエストに出力をパスします。
重要
サービスインタフェースでサービス出力を編集する際は、リクエストからのマッピングをコントローラに追加して、サービス入力が最終 REST API の一部となることを確認する必要があります。