GraphQL は、タイプ・システムに基づく照会言語です。 GraphQL タイプは、サポートされるオブジェクト、オブジェクトに関連付けられるフィールド、照会できる内容、および照会方法を定義します。これらはすべて、 GraphQL スキーマによって定義されます。 GraphQL API を効果的に使用するには、 Supply Chain Intelligence
Suite データ・モデルを十分に理解している必要があります。
開始前に
- GraphQLを初めて使用する場合は、 GraphQL API の基本に慣れるまで GraphQL チュートリアル を実行してください。
- Insomニアなどの REST クライアントをインストールします。
- ブラウザーが GraphiQL ツール用に 適切に構成 されていることを確認します。
このタスクについて
Supply Chain Intelligence
Suite データ・モデル・スキーマを学習するための優れた方法は、 GraphQL イントロスペクションを使用することです。 スキーマ・イントロスペクションは、定義されているオブジェクト、タイプに関連付けられているフィールド、列挙型の値、サポートされている照会の種類、照会に使用できるパラメーターなど、スキーマの任意の部分について質問がある場合に役立ちます。
以下のタスクについて学習します。
- サポートされるすべてのタイプ (オブジェクト、インターフェース、列挙など) を見つける方法。
- 各タイプの詳細 (オブジェクトのフィールドや列挙型の値など) を見つける方法。
- サポートされる照会、および照会の詳細 (パラメーターなど)。
- どの変換がサポートされているか。
- イントロスペクション結果に基づいて GraphQL 照会を構成する方法。
GraphiQLの文書エクスプローラーを使用できます。
GraphiQL ツールは、イントロスペクション・ロジックを使用して、UI で対話式スキーマ・エクスプローラーを作成します。 ブラウザーで以下の URL を貼り付けて、 GraphiQL インターフェースにナビゲートします。
https://api.ibm.com/infohub/run/graph/na
また、 「資料」 リンクにも注意してください。
「文書」 リンクをクリックすると、 GraphiQL はスキーマ・イントロスペクション要求を GraphQL API に送信し、応答を解析して文書オブジェクト・モデル (DOM) に変換します。その後、その DOM をナビゲートできます。 その後、 文書エクスプローラー が、モデル内の最上位オブジェクト (この例では query および mutation) のリストとともにレンダリングされます。
このビューでは、ドリルダウンしてすべてのオブジェクトとその属性を探索できます。 例えば、照会にドリルダウンした後、ビューには、照会の eventParams
属性の BusinessEventInput
値が表示されます。
手順
- GraphQL ビジュアル・エディターでスキーマに定義されているすべてのタイプをイントロスペクトします。
- ブラウザーに以下の URL を入力して、 GraphiQL ビジュアル・エディターにナビゲートします。
https://api.ibm.com/infohub/run/graph/na
- 以下の GraphQL 照会をエディターの左側に貼り付け、 「実行」をクリックします。
query {
__schema {
types {
name
description
kind
}
queryType {
fields {
name
description
}
}
}
}
照会が完了すると、エディターの右側に照会応答が表示されます。 応答を調べて、OBJECT、INTERFACE、および ENUM のいくつかの例を見つけます。 OBJECT タイプは、
GraphQL API の基盤です。 各 OBJECT には、データを公開し、名前で照会できるフィールドがあります。 INTERFACE は、OBJECT タイプによってインプリメントされる可能性があるフィールドのリストです。 ENUM タイプは、離散値のセットです。
- 応答の下部にナビゲートし、サポートされている照会のリストを表示します。
- オプション: GraphiQL ビジュアル・エディターで、右上隅のリンクを使用してスキーマ定義を検査します。
- Insomニアで同じ GraphQL スキーマ照会を実行します。
- 詳しくは、
Get Intelligence Suite schema
info
という名前の新規要求を開始してください。
- リストから 「POST」 を選択し、以下の URL を入力します。
https://api.ibm.com/infohub/run/graph/na
- 要求本体セクションで、
GraphQL
を選択し、前のステップと同じ照会をコピーして 「照会」 ボックスに貼り付けます。
- Insomニアで SSL 証明書の検証を無効にします。
- 「送信」 をクリックして、要求の応答セクションに応答を表示します。
応答は、前のステップで受け取った応答と同じでなければなりません。
- タイプの詳細をイントロスペクトします。
- 以下の照会をInsomニアに入力してください。
query {
__type(name: "BusinessObjectsCursor") {
...FullType
}
}
fragment FullType on __Type {
kind
name
description
fields(includeDeprecated: true) {
name
description
args {
...InputValue
}
type {
...TypeRef
}
isDeprecated
deprecationReason
}
inputFields {
...InputValue
}
interfaces {
...TypeRef
}
enumValues(includeDeprecated: true) {
name
description
isDeprecated
deprecationReason
}
possibleTypes {
...TypeRef
}
}
fragment InputValue on __InputValue {
name
description
type {
...TypeRef
}
defaultValue
}
fragment TypeRef on __Type {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
ofType {
kind
name
}
}
}
}
}
}
}
}
- 受信した応答を調べます。
BusinessObjectsCursor
is an OBJECT type, which implements INTERFACE Cursor
. これには、 edges
、 pageInfo
、および totalCount
の 3 つのフィールドが定義されています。 フィールド edges
は OBJECT BusinessObjectEdge
の LIST です。 INTERFACE を認識すると、応答の OBJECT タイプが異なる照会を簡素化するのに役立ちます。
- 照会内のタイプ名を、ステップ 1 または 2で選択した他のタイプに置き換え、照会を再実行し、応答を確認してタイプ定義を理解します。
- インターフェースに関連付けられたイントロスペクト・タイプ。
ステップ
3 に示されている照会はどのタイプにも使用できますが、INTERFACE や ENUM などの特定のタイプに対しては、より単純な応答を使用することをお勧めします。 特定の INTERFACE を実装する OBJECTS のクリーン・リストを取得できます。
GraphQL API クライアントの観点からは、OBJECT が実装する INTERFACE を認識すると、照会応答を簡素化するのに役立ちます。
- 以下の照会を使用して、同じ INTERFACE を実装するすべての OBJECTS を検索します。
query {
__type(name: "Cursor") {
name
kind
description
possibleTypes {
name
kind
description
}
}
}
応答には、
Supply Chain Intelligence
Suiteで定義されているすべての
Cursor
OBJECTS が表示されます。
- ステップ 1 または 2で識別した別のインターフェースを選択し、それを照会に入れ、実行して関連するすべての OBJECT を見つけます。
- ENUM 値をイントロスペクトします。
Supply Chain Intelligence
Suite は、スキーマ内で多数の ENUM を使用します。 ENUM タイプは、一連の離散値を定義します。例えば、 Supply Chain Intelligence
Suite ENUM タイプ BusinessObjectType
は、スキーマに定義されているすべてのビジネス・オブジェクトのリストを提供します。 このステップでは、ENUM の値リストを取得するための照会を示します。
- 以下の照会を任意のツールにコピーして貼り付け、照会を実行します。
query {
__type(name: "BusinessObjectType") {
name
kind
description
enumValues {
name
description
}
}
}
結果を調べて、ENUM
BusinessObjectType
の下にリストされているすべてのオブジェクト・タイプを確認します。 このリストには、API でサポートされるビジネス・データ・オブジェクトが表示されます。
- タイプを、ステップ 1 または 2 で選択した別の ENUM タイプに置き換え、照会を再実行してその ENUM の値リストを表示します。
- イントロスペクト・クエリー定義。
サポートされるすべての
GraphQL 照会は、スキーマ内の特殊なタイプ
Query
で定義されます。 ステップ
4 で定義した照会を使用して、関連情報を取得できます。
- Insomニアで以下の GraphQL 照会を実行します。
query {
__type(name: "Query") {
...QueryType
}
}
fragment QueryType on __Type {
fields {
name
description
type {
name
kind
}
args {
name
description
type {
name
kind
}
}
}
}
応答を調べます。 サポートされる各照会は、応答内のフィールドとして表示されます。 現在、スキーマには合計 4 つの照会が定義されています。 照会の 1 つは
businessObjectEvents
で、これは
BusinessEventCursor
を返します。 この照会は 5 つの異なるパラメーターを取ることができ、そのうちの 1 つは
advancedFilter
OBJECT タイプ
BooleanExp
です。
- ミューテーション定義をイントロスペクトします。
ミューテーションは、API によってサポートされるすべてのミューテーションを定義するもう 1 つのスキーマ・タイプです。 データのフェッチに使用される
GraphQL 照会 API とは異なり、
GraphQL ミューテーション API は、サーバー上のデータを変更するために提供されています。 ステップ
6で使用した照会で
Query
を
Mutation
に置き換え、すべての InforHub ミューテーション定義 (つまり、
Supply Chain Intelligence
Suite GraphQL API でサポートされるデータ操作の種類) をチェックアウトします。
- Supply Chain Intelligence
Suiteを構成します。
これで、サポートされるすべてのタイプを見つける方法と、各タイプの詳細を見つける方法が分かりました。 INTERFACE、ENUM、Query、Mutation のサンプル照会が用意されています。これらの照会には、最初の Supply Chain Intelligence
Suite GraphQL 照会の作成を開始するための十分な情報が含まれています。
- ステップ 6 の照会を使用して、
businessRuleEvents
の照会の定義を見つけます。
- ステップ 3 の照会を使用して、応答タイプの詳細を見つけます。
- ステップ 3 の照会を使用して、各照会パラメーターの詳細を見つけます。
- 前のステップの結果に基づいて、
businessRuleEvents
の GraphQL 照会を構成します。