活字体SDK和REST API

      この記事では、我々は、キューバのプラットフォームが機能して、長い時間の周りされているが、多くの人が知らない、これは議論するフロントエンドジェネレータSDKおよびそれのキューバ方法を学ぶのREST APIプラグインが一緒に使用しました。

Javaの+ JavaScriptを - ウェブで結ばれた結び目

      ちょうど約8年前、「二級市民」言語としてのJavaScript(JS)に我々のJava開発者は、Webアプリケーションで使用されます。その後、唯一のページにいくつかのJSのダイナミックな効果を追加する目的で、ウェブページはJSF、Strutsの、タペストリー、またはサーバによって生成されたようなThymeleafフレームを使用しています。今日、私たちは、クライアント側のJSの開発および他の使用など、リアクトヴューまたは角フレームの第一言語を目撃してもNode.jsのも、サーバーに表示されます。

      実用的な我々が開発したアプリケーション、Webアプリケーション、異なる言語で異なる層に使用することができる:クライアントUI、Java用のJSビジネスロジックの処理のために、SQLは、データベースからデータを取得するために使用される、データ分析のためのPython、ように。そして、これらすべての言語のアプリケーションの組み合わせに様々な技術を使用して。最も一般的な例は、RESTのAPI、HTTPプロトコルベースのプラットフォームに依存しない、シンプルなJSON形式で、今、クライアントとサーバーサイドJavaのJSを接続するデフォルトの方法となっています。

      しかし、最高のテーラー縫う服がシームレスにすることはできません。APIは疑問が常にある定義されています。呼び出しにどの方法、どのようなデータモデル、例えば、我々はまた、住所や文字列として渡されたオブジェクトとして構成されなければならないのですか?

      どのように我々は、高速なコードJavaScriptを作成するために、私たちの同僚を助けることができるだけでなく、誤解を避けるために?

闊歩は究極の答えになりますか?

      たぶん、あなたは「言いたい闊歩を右に、」。闊歩は実際に、設計、構築、およびREST APIの業界標準を使用して記録されています。多くのコードジェネレータは、異なる言語のSDKを終わらせるための顧客を生成することができますもあります。

      闊歩をサポートするフレームワークをキューバ、コンポーネントを拡張REST APIを使用して、各アプリケーションは、エンドポイントが闊歩文書.jsonまたは.yamlフォーマットをダウンロードするために使用できるAPIを有します。あなたはJSクライアントを生成するために、これらのファイルを使用することができます。

      しかし、実際には、闊歩はちょうどAPIドキュメントツールです。そして、フロントエンドの開発者が行うAPI内の情報の種類を見てみたいですか?サービスにマッピングされたビジネス機能、および定義された仕様のAPIのセットを構築するために:「クラシック」アプローチがあります。そして、このAPIは、RESTサービスのセットとして公開され、最終的にはほとんどその上、闊歩ドキュメントを追加します。

      このような場合は、なぜすぐにGraphQL上昇し、その中にフロントエンドの開発者でセンセーションを巻き起こしたのでしょうか?私たちは、GraphQLのシェアが高まっている、注意してください。最終的にはそれがどのようにでしょうか?事実ことを回避するには、多くの小規模なAPIを作成するための変更頻繁に遭遇するユースケースを、より多くの「ユニバーサル」APIを提供は、フロントエンドのスタッフのために、より適していることを証明しています。たとえば、Web UIカートのシナリオのために、アイテムの価格は、最初の呼び出しだけを取得する必要があり、その後、記事のためにのみ総数ができ知っている必要があります。また、GraphQLを避け、過剰なデータ収集やデータ収集不足だけでなく、より複雑なAPIが返すデータ構造を取得するためのコール。

      この場合、アプリケーションはより多くのサービスのAPIよりも、いくつかの共通APIを提供する必要があり、オープンであるべきと思われます。フロントエンドの開発者は、複雑なビジネス機能を呼び出すことができます、だけでなく、自由度とそれらを提供するような方法。彼らは異なるUIのためのデータのプレゼンテーションの異なる形式を取得する必要があるのであれば、彼らは新しいAPIを必要としません。

      もう一つの問題は、威張ったりGraphQLかのODataを行うには、それをどのように適合させるか、以前に生成されたクライアントコードのために、あなたが何かを変更した場合、あること、解決できないということでしょうか?ダイレクトワンタイム生成されたコードは簡単ですが、変更がビジネスをサポートすることができますが、それは別の問題です。例えば、我々は、フロントエンドアプリケーションがうまくいかないことを確認する方法を、エンティティの属性を削除しましたか?

      だから、一緒に、加速し、フロントエンドの開発チームとバックエンドのチームのフロントエンドとの間に簡素化コラボレーションするために、我々はする必要があります。

         特定のサービスとの共通APIのAPIを定義します。1.

         データモデルの後端とフロントエンドコード署名方式を生成します

         、生成されたコードを変更する人材の最小値を過ごすことを確認し、回避のバグしようとする3。

      我々はまた、キューバREST APIの拡張コンポーネントとフロントエンドSDKビルダーの全てで同じ課題に直面しています。

キューバ活字体SDK

      キューバ、REST APIの拡張コンポーネントは、次の機能を提供します。

         | CRUD操作データモデルエンティティ

         |実行定義済みのクエリJPQL

         |サービスメソッドの実行

         |取得メタデータ(エンティティ、ビュー、列挙、データタイプ)

         |現在のユーザー権限(アクセスエンティティ、属性、および特定のアクセス権)を取得します

         |現在のユーザーの情報(名前、言語、タイムゾーン、など)を取得

         |処理ファイル

      彼は、機能的には、我々はすべてのフロントエンドのクライアントからのアクセスのアプリケーションにすべての機能を提供すると述べました。通じAPI 闊歩YAMLファイルまたはJSONファイルとフロントエンド開発の説明は、これらの文書の使用をすぐに開発することができます。

      REST APIのユーザーのために設定されたセキュリティルールも非常に重要であり、APIエンドポイントは、すべてのユーザーへの偶発的な曝露を防止する必要があります。これは、第1の従来のREST APIにアクセスするためのすべてのユーザーを無効にして、特定の機能にアクセスするために必要な役割のために特別な権限を作成する必要があります。

      RESTのAPIを提供するよりも、キューバ、遠位端もSDKを使用して生成することができる、SDKは、角度、Vueの又は他のフレームを使用することができる、任意のフロントエンド開発フレームワークのための基礎として反応に使用することができます。

      活字体クラスのセットを生成することができ、この発電機では、APIを呼び出すことができるクライアントアプリケーションは、これらのクラスをキューバ。

      あなたがSDKを生成する場合は、次のコマンドを実行できます。

             -g @キューバプラットフォーム/フロント発電機をNPMインストール

      その後:

             genは、キューバ - フロントSDK:すべてを

      この機能は、すべてのSDKクラスを作成します。その顧客がすぐにキューバベースのアプリケーションを使用できるようにしても、直接、簡単なUIベースのReactJSを生成します。UIは非常に基本的な、しかし、キューバの統合のために生成されますが、すべての機能は、認証、ロールベースのデータ・アクセス、クエリのエンティティグラフなどを含め、使用することができキューバ。

      ここでは、SDKを見て、最終的に何が含まれています。

データモデル

      アプリケーションのデータモデルは、SDK活字体のクラスのセットです。高速起動で  セッションプランナー  、例えば、Javaでのエンティティがあります:

      次にSDKには、対応するクラスを生成します。

      すべてのデータの関係との関係は、組成のまま、直接APIのうちの一つの実体関連図を呼び出す必要なしに取得することができ、様々なエンティティを取得しました。

      背景と取得したデータが記載されているように加えて、また、何DTOは存在しません。

ビジネス・ロジック・サービス

      SDKには、開いているすべてのキューバRESTサービスは、活字体に反映されます。私たちはRESTに使用してAPIを開いた場合たとえば、  セッションサービスの  コード・インターフェースを、活字体は、このようなものです:

      フロントエンドは、コードを呼び出すことができます。

      非常に便利な、右?複雑なルーチンワークを生成コードによって行われます。

ユニバーサルAPI

      カスタム・ロジックは、フロントエンドでのみ実施される場合、次いで、それは、例えば、ライブラリRESTキューバインターネットで定義された機能のコアセットとして使用することができます。

            loadEntities <T>(エンティティネーム:文字列、オプション?:EntitiesLoadOptions、FetchOptionsを?:FetchOptionsを):プロミス<配列<SerializedEntity <T >>>。

            deleteEntity(エンティティネーム:文字列ID:任意、FetchOptionsを?:FetchOptionsを):プロミス<無効>。

      これらのメソッドは、アプリケーションエンティティCRUDの粒子サイズへのアクセスを提供します。セキュリティのアクセスがまだ存在する、キューバはサーバ側ですべての非匿名呼び出しを検証し、エンティティや属性を取得するからユーザーを防ぐ役割に準拠していません。

            cubaREST.loadEntities <スピーカー>(Speaker.NAME).then((結果=> {

               //結果の取り扱い

            }))。

      通过使用这些通用的 API,开发人员可以用 JS 在基于实体 CRUD 之上创建自定义的 API 层应用程序,并将其部署至 Node.js,以实现“服务于前端的后端”架构模式。而且,用这种方式创建的 API 层可以是多个,比如我们可以为不同的客户端创建不同的 API 层:ReactJS,原生 iOS等等。这种用例场景下,自动生成的 SDK 是最理想的工具。

      一般情况下,通用 API 的不足之处在于,获取的属性超过了所需的属性或者API描述符中的属性不足时,可能会导致数据获取不足或获取过多的风险。 但是,CUBA 的实体视图在后端解决了这个问题,我们为前端开发人员也提供了同样的方法! 对于每个生成的TypeScript类,我们创建能反映视图的类型:

      因此,可以从后端获取实体并且只获取后端视图指定的属性。这样的话,不需要去猜测到底拿到了哪些属性,IDE 会自动帮你补全:

API 更新

      如之前所述,代码生成只是开发过程中的很小一部分。代码改动和持续的支持才是耗费时间的地方。CUBA 的 TypeScript SDK 生成器在随后的运行期间会分析代码,跟踪改动并进行增量更新。 如果您将 TypeScript 作为前端的主要开发语言,TypeScript 编译器也会确保您不会忘记更新使用 SDK 的自定义代码。

总结

      除了基于 Vaadin 的通用 UI 之外,如果您还想为 CUBA 应用程序开发基于 JS 的客户端(React / React Native,Angular 或 Vue 等),则可以使用 REST API 扩展插件和 TypeScript SDK。通过使用 TypeScript SDK,不论使用何种前端技术,您都可以只关注设计或者性能,以便提供最佳的用户体验,而不需要做重复冗余的工作。并且几乎可以肯定 JS 和 Java 之间的通信以及支持 API 变化将会是您开发过程中最小的问题。

      了解 CUBA 平台,请访问 CUBA 中文官网

おすすめ

転載: www.cnblogs.com/cubacn/p/cuba_spring.html