NPMのように、しかし、APIのためにWundergraphハブを発表すること


Dockerが存在する前にどのようにアプリケーションを共有したか覚えていますか?アプリケーションは、彼らが今日であるように携帯ではありませんでした.手動で、または自動化されたすべての必要なパッケージをインストールする必要がありましたが、それはDockerランやDockerビルドと同じくらい簡単ではありませんでした.
Docker、またはより良いまだOCI(オープンコンテナイメージ)、完全にバンドルアプリケーションの方法を変更し、それらを配布します.今日、あなたはDockerレジストリからイメージを引いて、ローカルマシンまたは雲でそれを走らせることができます.
同様に、NPM、作曲家、またはMavenのようなパッケージマネージャのない世界を想像できますか?jQueryのようなJavaScriptライブラリがCDNからHTMLに直接含まれなければならなかった時代がありました.今日我々がソフトウェアを開発する方法は、パッケージマネージャに大いに依存します.
ツールのこれらのカテゴリーの両方が一般的であることは、基本的に、我々がソフトウェアを開発する方法を変えたということです.彼らは新しいワークフローを可能にし、開発者が協力してコードを共有することを容易にしました.
例えばDocker/ociはKubernetesの方法を舗装し、クラウドネイティブ環境でアプリケーションをどのように展開できるかを標準化する.
それで、我々が実際にAPIについて話したいとき、これらの2つに言及する点は、何ですか?さて、私は、それがAPIであるとき、我々がまだ石器時代にいると思っています.
APIコミュニティがAPIゲートウェイと開発者ポータルのようなツールを開発して、APIを配布して、APIを開発する間、彼らはAPI開発者と彼らの消費者の開発者経験について考えるのを完全に忘れました.
あなたが開発者ポータルを訪問して、決定するとき、何が起こりますか、あなたはあなたのプロジェクトでAPIを使用したいですか?SDKをダウンロードするか、Swagger/OpenAPIの仕様を使用して、手動の統合プロセスを開始します.NPMのインストールを実行することはできませんし、すべてのボックスから動作します.
典型的なプロジェクトは孤立した単一のデータベースとは話をしない.おそらく別のチームや第三者から複数のAPIを統合する必要があります.マイクロサービスアーキテクチャは多くの統合作業を必要とする.さらに、APIを提供する多くの強力なSaaSプロバイダがあります.例えば、メールを送信したり、ユーザアカウントを管理したりするためです.
すべてのこれらのサービスを統合することになるとき、開発者は多くのマニュアル仕事を経験しなければなりません.フロントエンドのためのバックエンドを構築して、認証を取り扱うことは、取り組むべき問題のほんの一部です.ほとんどの場合、このマニュアルの統合作業は共有されません.なぜなら、それはパブリックでは共有できない独自のクローズドソースコードだからです.これはAPI消費者が何度も何度も同じような仕事をすることを意味します.そして、時間とお金を浪費します.
私たちの目標はこれを変更することです!我々は、NPMのインストールとして単純なAPIの統合をしたい.私たちの目標は、APIの開発者とその消費者が全く新しいレベルで共同作業できるように、dockerコンテナとして移植できるAPIを作ることです.
手動でAPIを統合することは、JNからJQueryをインポートするようなものです.

簡単にapisを作る方法


Dockerと同様に、APIを移植できる共通言語が必要です.さらに、APIの統合を実行するランタイムが必要です.
これらの2つがあるなら、API開発者が彼らのAPIと「消費者」を「公開することができるように、我々のAPI統合を格納する場所を必要とします」と、彼らはDockerまたはNPMと同様に彼らのプロジェクトに「彼らを引っ張ります」.

API統合のための共通言語


言語のために、我々はGraphqlを使うことに決めました.すべてのAPIを単一のGraphSQLスキーマに組み合わせることによって、我々は一度に複数のAPIから「問い合わせ」データをすることができます.
さらに、Graphqlは強力なタイプシステムが付属しています.そして、あなたの統合のために例えばtypescriptインタフェースを生成するのを非常に簡単にします.

Wundergraph:API統合のためのランタイム


我々が昨年のためにしたことは、API統合のためにランタイムを構築することです.Wundergraphは、異なるサービスからAPIを単一のGraphSQLスキーマに結合することを容易にします.当社のランタイム/エンジンは、ほぼすべてのサービスに対してGraphSQLの操作を実行できるように、一般的な形式にそれらを組み合わせることが可能です.
これまでのところ、以下のバックエンドをサポートしています.
REST (OpenAPI / Swagger)
GraphQL
Apollo Federation
PostgreSQL
MySQL
SQLite
SQL Server
これらのいずれかを“内臓”することができますし、単一のコマンドで“ポータブル”wundergraph形式にそれらを有効にします.
上記のバックエンドに加えて、次のフロントエンドもサポートします.
REST(-ish) API
Postman Collections
Generated SDKs: 
    TypeScript
    React
    React Native
私たちが「フロントエンド」について話すとき、我々はAPI統合を消費する方法について話しています.Wundergraphは、ちょうどあなたのAPIをGraphic Schemaに結合して、それを一日と呼びません.私たちは一歩一歩進んで、あなたのAPIのために完全に準備ができてSDKを生成するだけではなく、あなたのAPIを呼び出すことができますが、また、認証と認証、キャッシュ、セキュリティなどを処理する.

Wundergraph Hub:API統合を保存し共有する場所


解決策の最後のコンポーネントはWundergraphハブです.これは、APIの統合を格納し、共有できる場所です.Docker HubまたはNPMと同様に、APIの説明を公開し、コミュニティと共有できます.
あなたは誰とでも公的に彼らを共有することができるか、人々のただ一人のグループ(例えばあなた自身の組織のそれらだけ)への接近を制限します.
共通言語、ランタイムとハブの3つのコンポーネントで、Wundergraphとハブを使用してAPIを統合する流れを見てみましょう.

どうやって動くの?


Wundergraphハブを使用したAPIの共有


最初のステップは、あなたが共有したいAPIを内省して、それをポータブルWundergraph形式に翻訳することです.これはwundergraphのタイプスクリプトSDKを使用して行うことができます.以下に例を示します:
// first, introspect an API
const countries = introspect.graphql({
    url: "https://countries.trevorblades.com/",
});

// then, prepare it for publishing it to the Hub
configurePublishWunderGraphAPI({
    organization: "wundergraph",
    apiName: "countries",
    title: "Trevor's Countries",
    markdownDescriptionFile: "countries.md",
    public: true,
    keywords: ["countries","trevor","trevorblades"],
    apis: [
        countries,
    ],
});
SDKを使用すると、結合して発行することができる1つ以上のAPIを内省できます.NPMがどのように機能するかと同様に、APIを組織に公開し、それを記述するために様々な方法を使用することができます.
公開する準備ができたら、次のコマンドを実行します.
$ wundergraph publish generated/wundergraph.countries.api.json
ハブで発表されたAPIを統合する
ここでWundergraphを使ったAPIの流れについて話しましょう.
まず、新しいプロジェクトを始めましょう.
$ wundergraph init#
$ cd .wundergraph
$ yarn
ワークスペースに2つのAPIを追加しましょう.
$ wunderctl integrations add wundergraph/countries wundergraph/spacex
APIの依存関係が自動的にダウンロードされ、インストールされます.プロジェクトのすべてのAPI依存関係は、Wundergraphに格納されます.マニフェスト.JSONファイル.
{
  "dependencies": [
    "wundergraph/spacex",
    "wundergraph/countries"
  ]
}
ワークスペースにAPIを追加すると、Wundergraph SDKを使用してWundergraph APIに追加できます.
import {
    Application,
    configureWunderGraphApplication,
    cors,
    templates
} from "@wundergraph/sdk";
import wunderGraphHooks from "./wundergraph.hooks";
import operations from "./wundergraph.operations";
import {integrations} from "./generated/wundergraph.integrations";

const spacex = integrations.wundergraph.spacex({
    apiNamespace: "spacex",
});

const countries = integrations.wundergraph.countries({
    apiNamespace: "countries",
});

const myApplication = new Application({
    name: "app",
    apis: [
        spacex,
        countries,
    ],
});
ご覧のように、生成された“統合”ファイルからAPIをインスタンス化します.あなたの注意、apinamespaceパラメータを起こさせるかもしれない1つの少しの詳細があります.
Wundergraphは、すべてのAPIを単一のGraphSQLスキーマに結合します.あなたが異なったチームまたはベンダーからAPIを同じGraphic Schemaに結合するならば、あなたは命名衝突に走らそうです、そして、あなたの図式は壊れます.異なるAPIを自分の名前空間に置くことで、これらの問題を手動で設定することなく回避できます.
最後のステップとして、新しく作成されたAPIと対話する操作を定義する必要があります.
query DragonsAndContries {
    dragons: spacex_dragons {
        name
        active
    }
    countries: countries_countries {
        code
        name
        capital
    }
}
このクエリは、スペースと国のAPIからデータを取得します.APIの名前空間で、APIの両方のルートレベルフィールドがどのようにプリフィックスされるかを見ることもできます.
今すぐあなたのWundergraphアプリケーションを起動し、それを使用して起動する準備が整いました.
# cd into the .wundergraph directory and run:
$ wunderctl up --debug
そして最後に、問い合わせてみましょう!
$ curl http://localhost:9991/api/main/operations/DragonsAndContries
この例では、curlを使用して生成されたREST(- ish)APIを問い合わせますが、より高度に進んで、生成されたTypeScriptクライアント、生成されたPostmanコレクションなどを使用できます.

概要


私たちは、SDKを使っているGraphSQL APIを内省して、それを出版のために準備して、それをハブに押しました.
それから、API消費者として、我々は2つのAPIを我々のプロジェクトに加えて、API名前空間で彼らを例示しました.最後に、我々は操作を定義し、curlを使用して、新しく作成されたAPIの統合と対話しました.
これは簡単な例のように見えるかもしれませんが、どれだけの時間を節約できますか.

どのように世界はこの流れを使用せずにどのように見えるのですか?


前に述べたように、APIの統合はまだ石器時代にあると考えています.したがって、開発者がWundergraphなしで同じ問題を保存する方法と、Wundergraphの流れを対比しよう.
First, you have to decide on a technology, language and framework to build your REST API
Then, add a new endpoint to your API
Use a tool like graphql-code-generator to generate a typesafe API client for both APIs
Use the generated client to query both APIs and implement the REST Endpoint
Define a JSON Schema for the REST Endpoint
Add an authentication and authorization layer to your REST Endpoint (this is batteries included in WunderGraph)
Add a caching middleware (this is batteries included in WunderGraph)
Use curl to query the REST Endpoint
WundergraphがAPIを統合するだけではないので、簡単にリストを作ることができました.我々の機能を見て、ツールの私たちのスイートを使用すると、認証、認証ベースのアクセス制御、モックキング、JSONスキーマの検証、自動etags、S 3ファイルのアップロードと、より多くの認証から認証へのAPIのすべての問題を解決することができます.
さらに、別のAPIを追加する必要がある場合、またはAPIの更新のいずれかを追加する必要がある場合はどうなります.Wundergraphとハブで、それは数分の問題で、大部分は自動的です.あなたは本当に退屈な仕事のためのあなたの時間を無駄にすべきではない.

Wundergraphハブ閉鎖ベータを発表すること


Wundergraphは、ランタイム/エンジンは非常に安定し、生産の準備ができています.Wundergraphファンの我々のコミュニティとともに、我々はここ数ヵ月にわたってそれを成熟させることができました.
今、私たちは、オープンソースに、そして、制限なしで我々のフレームワークをリリースする前に、最終段階に向かって進む時間です.
この最終的なステップを容易にするために、我々は、コミュニティからのフィードバックが必要です!
閉じるこの動画はお気に入りから削除されています.
興味があれば、https://hub.wundergraph.comを見て、プライベートベータにサインアップしてください.また、私たちの不和に参加することができますし、そこにベータに参加するようお願いします.
あなたがハブと我々のフレームワークがAPIで働くあなたの経験を改善するのを援助すると思うならば、我々はあなたから話を聞くのが好きです.

未来


私たちの計画は2022年1月にオープンソースフレームワークをリリースすることです.私たちの長期目標は、より多くのバックエンドを接続し、より多くのフロントエンド技術と統合できるようにすることです.
バックエンド側では、SOAP、ODATA、GRPC、MongoDBのサポートを追加します.フロントエンド側では、Vue、svelte、角、iOS、アンドロイド、フラッタ、Java、Go、Python、Ruby、PHP、TypesScript、Swift、Kotlin、C Chi Rageをサポートしています.
私たちのビジョンは、バックエンドとフロントエンドagnosticされている間APIの周りのすべての問題を解決するためのメタフレームワークになることです.任意のバックエンドやフロントエンド技術を使用する必要があります、我々はAPIの統合、セキュリティなどの重いリフティングを扱っている.