GraphQL 를 사용한 자체 검사

GraphQL 는 유형 시스템을 기반으로 하는 조회 언어입니다. GraphQL 유형은 지원되는 오브젝트, 오브젝트와 연관되는 필드, 조회할 수 있는 항목 및 GraphQL 스키마에서 모두 정의되는 방법을 정의합니다. GraphQL API를 효과적으로 사용하려면 Supply Chain Intelligence Suite 데이터 모델을 잘 이해하고 있어야 합니다.

시작하기 전에

이 태스크에 대한 정보

Supply Chain Intelligence Suite 데이터 모델 스키마를 학습하는 가장 좋은 방법은 GraphQL 검사를 사용하는 것입니다. 스키마 자체 검사는 정의된 오브젝트, 유형과 연관된 필드, 열거 값, 지원되는 조회 유형 및 조회에 사용할 수 있는 매개변수와 같은 스키마 파트에 대한 질문이 있을 때마다 도움이 될 수 있습니다.

다음 태스크를 학습합니다.

  • 지원되는 모든 유형 (예: 오브젝트, 인터페이스, 열거) 을 찾는 방법입니다.
  • 각 유형의 세부사항 (예: 오브젝트의 필드 또는 열거 값) 을 찾는 방법입니다.
  • 지원되는 조회 및 조회 세부사항 (예: 매개변수).
  • 지원되는 변형입니다.
  • 자체 검사 결과를 기반으로 GraphQL 조회를 구성하는 방법입니다.

GraphiQL에서 문서 탐색기를 사용할 수 있습니다.

GraphiQL 도구는 자체 검사 로직을 사용하여 UI에서 대화식 스키마 탐색기를 빌드합니다. 브라우저에서 이 URL을 붙여넣어 GraphiQL 인터페이스로 이동하십시오.

https://api.ibm.com/infohub/run/graph/na

그리고 문서 링크를 참고하십시오.

GraphiQL 문서

문서 링크를 클릭하면 GraphiQLGraphQL API에 스키마 자체 검사 요청을 전송한 후 사용자가 탐색할 수 있는 문서 오브젝트 모델 (DOM) 로 응답을 구문 분석합니다. 그런 다음 문서 탐색기 가 모델의 최상위 레벨 오브젝트 목록과 함께 렌더링됩니다. 이 예제에서는 querymutation입니다.

GraphiQL 조회 및 변형의 루트 유형을 표시하는 문서 탐색기

이 보기에서 드릴 다운하여 모든 오브젝트 및 해당 속성을 탐색할 수 있습니다. 예를 들어, 조회로 드릴 인한 후 보기에는 조회에 대한 eventParams 속성의 BusinessEventInput 값이 표시됩니다.

BusinessEvent입력에서 사용되는 필드를 표시하는 GraphiQL

프로시저

  1. GraphQL Visual Editor에서 스키마에 정의된 모든 유형을 검사합니다.
    1. 브라우저에 다음 URL을 입력하여 GraphiQL Visual Editor로 이동하십시오.
      https://api.ibm.com/infohub/run/graph/na
    2. 다음 GraphQL 조회를 편집기의 왼쪽에 붙여넣고 실행을 클릭하십시오.
      query {
       __schema {
      	    types {
      		  name
      		  description
      		  kind
      		}
      		queryType {
      		  fields {
      			name
      			description
      		  }
      		}
         }
       }
      조회가 완료되면 편집기의 오른쪽에서 조회 응답을 볼 수 있습니다. 응답을 살펴보고 OBJECT, INTERFACE및 ENUM의 일부 예제를 찾으십시오. OBJECT 유형은 GraphQL API의 기초입니다. 각 OBJECT에는 데이터를 노출하고 이름으로 조회할 수 있는 필드가 있습니다. INTERFACE는 OBJECT 유형으로 구현될 수 있는 필드 목록입니다. ENUM 유형은 이산 값 세트입니다.
      스키마 응답의 예
    3. 응답의 맨 아래로 이동하여 지원되는 조회 목록을 보십시오.
    4. 선택사항: GraphiQL Visual Editor에서 오른쪽 상단 구석에 있는 링크를 사용하여 스키마 정의를 검사하십시오.
  2. 불면증에서 동일한 GraphQL 스키마 조회를 실행하십시오.
    1. 불면증을 열고 Get Intelligence Suite schema info라는 새 요청을 시작하십시오.
    2. 목록에서 POST 를 선택하고 다음 URL을 입력하십시오.
      https://api.ibm.com/infohub/run/graph/na
    3. 요청 본문 섹션에서 GraphQL 를 선택하고 이전 단계에서 동일한 조회를 복사하여 QUERY 상자에 붙여넣으십시오.
    4. 불면증에서 SSL 인증서 확인을 사용 안함으로 설정하십시오.
    5. 전송 을 클릭하고 요청의 응답 섹션에서 응답을 확인하십시오.
      응답은 이전 단계에서 수신된 응답과 동일해야 합니다.
  3. 유형 세부사항을 검사하십시오.
    1. 불면증에 다음 조회를 입력하십시오.
        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
        			  }
        			}
        		  }
        		}
        	  }
        	}
          }
        }
      
    2. 수신된 응답을 검사하십시오.
      BusinessObjectsCursor is an OBJECT type, which implements INTERFACE Cursor. 정의된 세 개의 필드 ( edges, pageInfototalCount) 가 있습니다. 필드 edges 은 (는) OBJECT BusinessObjectEdge의 LIST입니다. INTERFACE를 알면 응답에서 서로 다른 OBJECT 유형으로 조회를 능률화하는 데 도움이 될 수 있습니다.
      유형 응답
    3. 조회의 유형 이름을 1 또는 2단계에서 선택한 일부 다른 유형으로 바꾸고 조회를 다시 실행한 후 응답을 확인하여 유형 정의를 이해하십시오.
  4. 인터페이스와 연관된 유형을 검사합니다.
    3 단계에 표시된 조회를 모든 유형에 사용할 수 있지만 특정 유형 (예: INTERFACE 또는 ENUM) 에 대해 더 단순한 응답을 선호할 수 있습니다. 특정 INTERFACE를 구현하는 OBJECTS의 정리 목록을 가져올 수 있습니다. GraphQL API 클라이언트 관점에서 OBJECT가 구현하는 INTERFACE를 알면 조회 응답을 간소화하는 데 도움이 될 수 있습니다.
    1. 다음 쿼리를 사용하여 동일한 INTERFACE를 구현하는 모든 OBJECTS를 찾으십시오.
      query {
      __type(name: "Cursor") {
        name
        kind
        description
        possibleTypes {
          name
          kind
          description
        }
      }
      }  
      응답은 Supply Chain Intelligence Suite에 정의된 모든 Cursor OBJECTS를 표시합니다.
      인터페이스 조회 응답
    2. 1 또는 2단계에서 식별한 다른 인터페이스를 선택하여 조회에 넣고 이를 실행하여 연관된 모든 오브젝트를 찾으십시오.
  5. ENUM값을 검사하십시오.
    Supply Chain Intelligence Suite 는 스키마에서 다수의 ENUM을 사용합니다. ENUM 유형은 이산 값 세트를 정의합니다. 예를 들어, Supply Chain Intelligence Suite ENUM 유형 BusinessObjectType 은 스키마에 정의된 모든 비즈니스 오브젝트의 목록을 제공합니다. 이 단계는 ENUM의 값 목록을 가져오기 위한 조회를 표시합니다.
    1. 다음 조회를 선택한 도구에 복사하여 붙여넣고 조회를 실행하십시오.
      query {
      __type(name: "BusinessObjectType") {
        name
        kind
        description
        enumValues {
          name
          description
        }
      }
      }
      결과를 확인하여 ENUM BusinessObjectType아래에 나열된 모든 오브젝트 유형을 확인하십시오. 이 목록은 API에서 지원되는 비즈니스 데이터 오브젝트를 표시합니다.
      ENUM 조회 응답
    2. 유형을 1 또는 2 단계에서 선택한 다른 ENUM 유형으로 바꾸고 조회를 다시 실행하여 해당 ENUM에 대한 값 목록을 확인하십시오.
  6. 조회 정의를 검사하십시오.
    지원되는 모든 GraphQL 조회는 스키마의 특수 유형 Query 에 정의되어 있습니다. 4 단계에서 정의된 조회를 사용하여 관련 정보를 가져올 수 있습니다.
    1. 불면증에서 다음 GraphQL 조회를 실행하십시오.
        query {
          __type(name: "Query") {
        	...QueryType
          }
        }
      
        fragment QueryType on __Type {
          fields {
        	name
        	description
        	type {
        		name
        		kind
        	}
        	args {
        	  name
        	  description
        	  type {
        		  name
        		  kind
        	  }
        	}
          }
        }
      응답을 검사하십시오. 지원되는 각 조회는 응답에 필드로 표시됩니다. 현재 총 네 개의 조회가 스키마에 정의되어 있습니다. 조회 중 하나는 BusinessEventCursor를 리턴하는 businessObjectEvents입니다. 이 조회는 5개의 서로 다른 매개변수를 사용할 수 있으며 그 중 하나는 advancedFilter OBJECT 유형 BooleanExp입니다.
      쿼리 정의 응답
  7. 비정상 변경 정의를 검사합니다.
    변형은 API에서 지원하는 모든 변형을 정의하는 다른 스키마 유형입니다. 데이터를 페치하는 데 사용되는 GraphQL 조회 API와 달리, 서버의 데이터를 수정하기 위해 GraphQL 변형 API가 제공됩니다. 6단계에서 사용되는 조회에서 QueryMutation 로 대체하고 모든 InforHub 변형 정의 (즉, Supply Chain Intelligence Suite GraphQL API를 통해 지원되는 데이터 조작의 종류) 를 체크아웃하십시오.
  8. Supply Chain Intelligence Suite을 구성하십시오.
    이제 지원되는 모든 유형을 찾는 방법과 각 유형의 세부사항을 찾는 방법을 알 수 있습니다. 첫 번째 Supply Chain Intelligence Suite GraphQL 조회 구성을 시작하기 위한 충분한 정보를 포함하는 INTERFACE, ENUM, Query, Mutation에 대한 샘플 조회가 제공되었습니다.
    1. 6 단계의 조회를 사용하여 businessRuleEvents에 대한 조회의 정의를 찾으십시오.
    2. 3 단계의 조회를 사용하여 응답 유형의 세부사항을 찾으십시오.
    3. 3 단계의 조회를 사용하여 각 조회 매개변수의 세부사항을 찾으십시오.
    4. 이전 단계의 결과에 따라 businessRuleEvents에 대한 GraphQL 조회를 구성하십시오.