- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 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~
argumentsを生成する。
---resolve~
argumentsを使ってresolveする。
-書き込み(Mutation)
-データのサブスクリプション(WebHooksで実装される)
-書き込み(Mutation)~
...。
-データのサブスクリプション(WebHooksで実装)~
...。
**サポート [#p68b48fa]
***クライアント [#ta9da08c]
-Apollo
-Relay
※ JSクライアント。サーバも同梱。
***サーバ [#n84753e8]
[[Apollo、Relay>#ta9da08c]]以外は、~
-[[Apollo、Relay>#ta9da08c]]以外は、~
個別のライブラリとして提供されているらしい。
-JavaScript、Perl、Python、Ruby、PHP
-Java、C#、Go
-Scala、Haskell、R、Clojure
-Elixir、Erlang
-以下は、サポートがある言語。
--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]]