ミドルウェアを備えたウルトラパフォーマンスAPIゲートウェイを組み立てるためのオープンフレームワーク。以前はKrakend Frameworkとして知られており、Krakend API Gatewayのコアサービス。
REST APIコンテンツの消費者(特にマイクロサービスで)は、UIの実装にコーディングされていないバックエンドサービスをクエリします。これはもちろん良い習慣ですが、UIの消費者は、マイクロサービスの応答のサイズに多くの複雑さと負担をかける実装を行う必要があります。
Luraは、クライアントとすべてのソースサーバーの間にあるAPIゲートウェイビルダーとプロキシジェネレーターであり、クライアントにすべての複雑さを削除する新しいレイヤーを追加し、UIが必要とする情報のみを提供します。 Luraは、多くのソースのアグリゲーターとして単一のエンドポイントに機能し、応答をグループ化、ラップ、変換、縮小することができます。さらに、OAuthの承認やセキュリティレイヤーの追加など、機能を拡張できる無数のミドルウェアとプラグインをサポートします。
LuraはHTTPをサポートするだけでなく、一般的なライブラリのセットであるため、あらゆるタイプのAPIゲートウェイとプロキシを構築できます。たとえば、RPCゲートウェイを含むことができます。
モバイル開発者は、バックエンドサービスに4つの異なる呼び出しからのデータを必要とする単一のフロントページを構築する必要があります。
1) api.store.server/products 2) api.store.server/marketing-promos 3) api.users.server/users/{id_user} 4) api.users.server/shopping-cart/{id_user}
画面は非常にシンプルで、モバイルクライアントは4つの異なるソースからデータを取得し、往復を待ってから、応答からいくつかのフィールドのみを選択する必要があります。
モバイルが単一のエンドポイントを呼び出すことができる場合はどうなりますか?
1) lura.server/frontpage/{id_user}
それはルラがあなたのためにできることです。そして、これがどのように見えるかです:
Luraはすべてのデータをマージし、必要なフィールドのみを返します(グラフのサイズの違い)。
詳細については、Lura Project Webサイトをご覧ください。
Luraプロジェクトフレームワークのソースコード。 UNIX哲学に従って、小さな独立した再利用可能なコンポーネントを使用して、独自のミドルウェアを使用して機能を拡張するように設計されています。
このリポジトリを使用して、APIゲートウェイのソースから構築する場合、または別のアプリケーションでコンポーネントを再利用する場合は使用します。
完全に機能するAPIゲートウェイが必要な場合は、アーキテクチャ用のKrakendバイナリをダウンロードしたり、自分で構築したりできます。
Luraプロジェクトは、強力なプロキシまたはAPIゲートウェイを構築するために独自のGOアプリケーションに含めることができるGOライブラリとして提示されます。完全な例については、Krakend CEリポジトリを確認してください。
もちろん、コードをコンパイルするには、システムにインストールされる必要があります。
すぐに使用できる例:
パッケージmainimport( "flag" "log" "os" "github.com/luraproject/lura/config" "github.com/luraproject/lura/logging" "github.com/luraproject/lura/proxy" "github.com/ luraproject/lura/router/gin ")func main(){port:= flag.int(" p "、0、 「サービスのポート」)logLevel:= flag.string( "l"、 "error"、 "logging level")debug:= flag.bool( "d"、false、 "enable" debug ")configfile:= flag .String( "c"、 "/etc/lura/configuration.json"、 "configuration filename")flag.parse()parser:= config.newparser()serviceconfig、err:= parser.parse(*configfile)if err!= nil {log.fatal( "error:"、err.error())) } serviceconfig.debug = serviceconfig.debug || *debugif *port!= 0 {serviceconfig.port = *port}ロガー、_:= logging.newlogger( *loglevel、os.stdout、 "[lura]")routerfactory:= gin.defaultFactory(proxy.defaultactory(logger) 、logger)routerfactory.new()。run(serviceconfig) }
Luraプロジェクトのコンポーネントの詳細については、フレームワークの概要をご覧ください。
Lura configファイル
いくつかのLuraコンポーネントのベンチマーク結果をご覧ください
私たちはいつでも貢献を受けて喜んでいます。質問、提案、バグがある場合は、問題を開いてください。コードを送信する場合は、問題を作成し、レビューのプルリクエストを送信してください。
詳細については、Contributing.mdをお読みください。
Twitterでフォローしてください:@luraproject
Slackチャンネルにアクセスしてください
ドキュメントを読んでください
ルーラをお楽しみください!