Rest-api vs Graphql-api?


Rest-api ?


アプリケーションインタフェース(API)は、アプリケーションまたはデバイスがどのように相互に接続および通信するかを定義するルールのセットである.
REST APIは、RESTアーキテクチャスタイル設計の原則(条件)を遵守するAPIである.

REST? RESTful?


Roy Fielding博士は2000年に初めて自分の博士号論文で定義し、より高いレベルの柔軟性と自由度を提供するための方法である.
1つのアプリケーションまたはサービスが別のアプリケーションまたはサービス内のリソースにアクセスできるメカニズム.比較的豊富なデータフォーマットをサポートし、6つの要件があります.
統合インタフェース
要求がどこから来たかにかかわらず、同じリソースに対するすべてのAPI要求は同じでなければならない.REST APIは、同じデータセグメント(例えば、ユーザ名または電子メールアドレス)が1つのURI(Uniform Resource Identifier)にのみ属していることを確認する必要があります.あまり大きなリソースは必要ありませんが、クライアントに必要なすべての情報を含める必要があります.
クライアント-サーバペア
REST API設計では、クライアントとサーバアプリケーションが完全に独立している必要があります.クライアント・アプリケーションが知っておくべき唯一の情報は、要求されたリソースのURIであり、サーバ・アプリケーションと他の方法で対話することはできません.同様に、サーバアプリケーションは、HTTPによって要求されたデータに転送されない限り、クライアントアプリケーションを変更する必要はない.
Stateless.
REST APIは無状態です.これは、各リクエストに異議を処理するために必要なすべての情報を含まなければならないことを意味します.すなわち、REST APIはサーバ側セッションを必要としない.サーバ・アプリケーションは、クライアント・リクエストに関連するデータを格納できません.
キャッシュ性
可能な場合、リソースはクライアントまたはサーバ側でキャッシュできる必要があります.サーバ応答には、キャッシュが転送されるリソースを許可するかどうかに関する情報も含まなければならない.サーバ側の拡張性を向上させ、クライアントのパフォーマンスを向上させることを目的としています.
階層型アーキテクチャ
REST APIでは、呼び出しと応答は異なるレイヤを通過する.通常、クライアントとサーバアプリケーションが直接接続されているとは仮定しないでください.通信ループには複数の異なる仲介があり得る.REST APIの設計では、クライアントまたはサーバがエンドアプリケーションまたは仲介者と通信するかどうかを知らないことが要求される.
オプションコード付属
REST APIは通常静的リソースを送信するが、場合によっては応答に実行可能なコード(例えばJava applet)を含むことがある.この場合、コードはリクエスト時のみ実行する必要があります.
大まかには理解できるが、なかなか理解しにくい概念でもある.放っておけば弱点が多く、実際には各種認証でセキュリティが向上しています.

graphql?


図QL(以下graphsqlと略す)は、Facebookが2012年に開発し、2015年に公開したデータ照会語である.Graphqlは、RESTまたは付属のWebサービスアーキテクチャに代わることができる.
クライアントは、必要なデータの構造を指定し、サーバは完全に同じ構造でデータを返します.図QLは強力な言語であり、ユーザーにどのデータが必要かを明確にすることができる.このような構成は、不要なデータを受信したり、必要なデータを受信できなかったりする問題を回避する.
主なグラフィックQLクライアントはアポロクライアントやRelayなどがある.
Graphql構造-クエリー/音楽(query/variation)
Qerryのデータ処理機能はCRUDのRに属する.基本文は次のとおりです.
qeury{
	user{
   	name:""
   }
}
突然変異はデータ処理機能でCUDを担当する.
mutaion{
	createboard(name:"Board"){
   	name
   }
}
このクエリ文を使用するには、モードを定義する必要があります.
レゾルバ(左利き)
データベースを使用する場合、sqlを記述してデータをインポートします.また、データベースは、データベース・アプリケーションを使用してデータをインポートする具体的なプロセスを実現します.しかし,gqlはデータのインポートの具体的なプロセスを直接実現する必要がある.gqlクエリ文パーティションは、ほとんどのgqlライブラリで処理されますが、gqlからデータを取得する具体的なプロセスは、解析器が担当し、直接実装する必要があります.プログラマはResolverを直接実装する負担があるが,データソースの任意のタイプを実現できると考えている.例えば、Resolverを介してデータベースからデータをインポートしたり、通常のファイルからデータをインポートしたり、HTTP、SOAPなどのネットワークプロトコルを使用してリモートデータをインポートしたりすることができます.また、これらの特性を用いて、残留システムをgqlベースのシステムに変換することができる.

REST API vs graphql


REST APIは、URLやメソッドなどを組み合わせているため、複数のエンドポイントが存在する.逆にgraphql(以下gqlと略す)には1つの端点しか存在しない.また、gql APIでは、クエリーの組合せによってロードされるデータ型が決定される.たとえば、REST APIでは、各エンドポイントに異なるデータベースSQLクエリーがあり、gql APIでは、gqlアーキテクチャ内の異なるタイプのデータベースSQLクエリーがあります.
REST APIでは、フロントエンドプログラマは、バックエンドプログラマが作成して伝達するAPI要求/応答のフォーマットに依存する.しかし,gqlを用いる方式では,この依存はかなり消失する.しかし,データschemaに対するコラボレーション依存性は依然として存在する.

HTTPとgqlの技術スタックを比較する

リファレンス


[REST API、IBM、2022年03月22日接続]
https://www.ibm.com/kr-ko/cloud/learn/rest-apis
[REST,ツリーWeki,2022年03月22日登録]
https://namu.wiki/w/REST
[graphql,Wikipedia,2022年03月22日接続]
https://ko.wikipedia.org/wiki/%EA%B7%B8%EB%9E%98%ED%94%84QL
[GraphQLコンセプトをつかみ、KACA、2022年03月23日上陸]
https://tech.kakao.com/2019/08/01/graphql-basic/
[GraphQL]GraphQLを使用してAPI(2)-GraphQLクエリー、音楽、モード、Resolver、Github、
2022年03月23日登録]
https://chanhuiseok.github.io/posts/gql-3/