「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>WebAPI]] * 目次 [#we1a6f3e] #contents *概要 [#u19665b0] -簡単ではない(≒苦行)らしい。 -API(≒[[WebAPI]])のために作られた、 --データクエリとデータ操作のための言語 --保存されたデータに対してクエリを実行するランタイム **経緯 [#e1cc2f88] -2012年にFacebookの内部で開発され、2015年に公開。 -2018年11月7日、Linux Foundationがホストする~ 新たに設立されたGraphQL Foundationに移譲された。 **特徴 [#r48da9c0] -RESTやその他のWebサービスと比較して、 --効率的 --堅牢 --フレキシブル >なアプローチを提供 -クエリ言語の特徴 --柔軟性と豊かな表現が可能 --反面、複雑さを加え、シンプルなAPIには適さない可能性。 *詳細 [#rf1dc347] **構成 [#l278434a] -型システム -クエリ言語 -実行セマンティクス -静的な検証 -型イントロスペクション **機能 [#cb48d09d] ***機能概要 [#f83c34ce] -クライアントが必要なデータの構造を定義することができ、 -サーバーからは定義したのと同じ構造のデータが返される。 --必要以上に大きなデータが返されるのを防ぐことができる。 --クエリ結果のウェブキャッシュの効果に影響を与える。 -基本的には、 --NoSQLが対象だが、RDBMSも対象にできる。 --GraphQLが直接的にDBとやりとりするわけではない。 --まず対象となるデータをすべて、前もってデータベースから取り出しておく。 --ここから、フィルタなどの処理を行い、必要なデータだけを取り出す。 ***クエリと操作 [#da6049c0] -読み込み(Query) --Schemaクラスを定義する。 --Queryクラスに以下を実装。 ---arguments~ argumentsを生成する。 ---resolve~ argumentsを使ってresolveする。 -書き込み(Mutation)~ ...。 -データのサブスクリプション(WebHooksで実装)~ ...。 **サポート [#p68b48fa] ***クライアント [#ta9da08c] -Apollo -Relay ※ JSクライアント。サーバも同梱。 ***サーバ [#n84753e8] -[[Apollo、Relay>#ta9da08c]]以外は、~ 個別のライブラリとして提供されているらしい。 -以下は、サポートがある言語。 --JavaScript、Perl、Python、Ruby、PHP --Java、C#、Go --Scala、Haskell、R、Clojure --Elixir、Erlang *参考 [#r48da518] -GraphQL - Wikipedia~ https://ja.wikipedia.org/wiki/GraphQL -C#(ASP.NET Core)で GraphQL API を提供する - miso_soup3 Blog~ https://miso-soup3.hateblo.jp/entry/2017/11/30/162445 **Qiita [#q1ca2892] -Go + MongoDBでGraphQLを使ってみる~ https://qiita.com/y4u0t2a1r0/items/486f0d768cfff8f35216 -RDBでGraphQL使いたい~ https://qiita.com/lightstaff/items/7e7d5479a13469ab625a -GraphQLは90%のウェブサービス開発者にはまだ時期尚早ではないか~ https://qiita.com/shibukawa/items/a913cb4912d32af37bc5 ---- Tags: [[:.NET開発]], [[:通信技術]], [[:.NET Standard]], [[:.NET Core]], [[:ASP.NET]], [[:ASP.NET Web API]]