web-dev-qa-db-ja.com

JSONスキーマからGraphQLスキーマへのコンバーター

JSONスキーマスキーマ(Swaggerなど)をGraphQLスキーマに変換するアダプターはありますか? REST http://graphql.org/blog/rest-api-graphql-wrapper/ のラップに関する公式の記事さえありますが、通常はREST既に説明されており、Swaggerが最も一般的なフォーマットです。すでに既存の実装がある場合は、自分で書きたくありません。

14
Rax Wunter

また、Swaggerを使用する場合、既存のREST APIをラップできるライブラリを作成しました。

https://github.com/yarax/swagger-to-graphql

基本的には、GraphQL型へのSwaggerスキーママッピングを行います。

そしてこのアプローチとライブラリについての記事があります https://medium.com/@raxwunter/moving-existing-api-from-rest-to-graphql-205bab22c184

7
Rax Wunter

私は実際にこれを数ヶ月前に試してみることに少し時間を費やしました。結果を詳しく説明する私の投稿をここで読むことができます: https://medium.com/apollo-stack/will-graphql-replace-rest-documentation-f1a55092ef9d#.m50im46o0

オンラインで利用可能な多くのSwaggerスキーマを検討した結果、Swaggerまたは同様のAPI記述言語は、GraphQLスキーマを定義するための良い出発点になると思いますが、独自にスキーマを生成するための十分な情報が含まれていないことがよくあります。具体的には、通常、オブジェクト間の関係に関する十分なデータがありません。

JSON形式のスキーマ記述から始めたい場合は、Swaggerでさまざまなデータ型をループするコードを記述し、GraphQLObjectTypeオブジェクトを生成するだけです。上記のリンクしたブログ投稿のサンプルリポジトリで、これに対する簡単なアプローチを確認できます: .js#L28

基本的には、データの1つの形式を別の形式に変換するだけで、データ間にいくつかの関係(外部キー、IDなど)を追加し、ルートクエリをいくつか追加してエントリポイントを作成する必要があります。 REST APIの場合、多くの場合、単一および複数のリソースエンドポイントをルートクエリフィールドとして機能させることは理にかなっています。

13
stubailo

一方、JSONスキーマをGraphQLスキーマに変換するためにいくつかのツールが実装されています。

1
Jakob