NowGraphQLService 클래스 - iOS

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기6분
  • NowGraphQLService 클래스는 GraphQL REST API를 통해 인스턴스의 데이터에 대해 GraphQL 쿼리를 사용하여 요청할 수 있는 ServiceNow 기능을 제공합니다.

    표 1. 속성
    이름 유형 설명
    구성 NowService구성 서비스를 초기화할 때 제공된 구성 설정입니다.

    NowGraphQLService - execute(query: GraphQLQuery) async throws

    지정된 GraphQL 쿼리를 실행합니다.

    표 2. 매개변수
    이름 유형 설명
    쿼리 문자열 실행할 GraphQL 쿼리입니다.
    표 3. 반환
    유형 설명
    데이터 메서드가 성공할 경우 반환됩니다. 지정된 쿼리에서 생성된 쿼리 데이터입니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

    • badResponse(statusCode: HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

    • cannotDecodeModel(디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 throw됩니다.

    • cannotEncodeModel(인코딩 오류)
      • EncodingError: 인코딩 오류가 감지되었습니다.

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

      URL을 구성할 수 없을 때 throw됩니다. 예를 들어 문자열에 URL에서 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생할 때 throw됩니다.

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    private func fetchArticles() async throws -> [Article] { 
        guard let graphQLService = graphQLService else { 
            throw ArticleListError.invalidGraphQLService 
        }         
    
        do {
            let data = try await graphQLService.execute(GraphQLQuery(query: recentlyPublishedQuery))
            let articles = try dataToArticleList(data)
        } catch let error as NowDataError {
            throw ArticleListError.fetchError(error)
        } catch {
            throw error
        }
    } 
      
    private let recentlyPublishedQuery = 
    """ 
    
    {
      GlideRecord_Query {
        kb_knowledge(queryConditions: "active=true^ORDERBYpublishedDESC" pagination: { limit: 10, offset: 0 }) {
          _results { 
            sys_id {
              value
            },
            number {
              displayValue
            },
            short_description {
              displayValue
            },
            author {
              displayValue
            }
            published {
              displayValue
            }
          }
        }
      }
    }
    """

    NowGraphQLService - execute(쿼리: GraphQLQuery, 완료: @escaping (Result<Data, NowDataError>))

    지정된 GraphQL 쿼리를 실행합니다.

    표 4. 매개변수
    이름 유형 설명
    쿼리 문자열 실행할 GraphQL 쿼리입니다.
    완료 @escaping(결과<데이터, NowDataError>) 쿼리가 완료된 후 실행할 완료 핸들러입니다.
    반환 값:
    • 성공: 쿼리 데이터를 반환합니다.
    • 오류: NowDataError
    표 5. 반환
    유형 설명
    없음

    gqlService.execute(GraphQLQuery(query: myQuery)) { result in 
      switch result { 
      case .success(let data): 
        // use data 
      case .failure(let error): 
        // handle error 
      } 
    }

    NowGraphQLService - init(configuration: NowServiceConfiguration, coreServiceProvider: NowCoreServiceProviding)

    지정된 매개변수를 기반으로 NowGraphQLService를 만듭니다.

    표 6. 매개변수
    이름 유형 설명
    구성 NowService구성 서비스를 초기화할 때 사용할 구성 매개변수(예: 서비스와 통합하는 애플리케이션의 번들 ID 및 NowGraphQLService가 액세스하려는 인스턴스의 URL ServiceNow )입니다.
    코어서비스제공자 NowCoreService제공 옵션입니다. 핵심 서비스 공급자.
    주:
    현재 이 매개변수는 선택 사항으로 표시되어 있더라도 필수입니다.

    기본값: nil

    NowGraphQLService - 게시자(쿼리용: GraphQLQuery)

    GraphQL 데이터를 요청할 게시자를 만듭니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    표 7. 매개변수
    이름 유형 설명
    쿼리용 GraphQLQuery 실행할 GraphQL 쿼리 문자열입니다.
    표 8. 반환
    유형 설명
    AnyPublisher<Data, NowDataError> 성공: GraphQL 데이터 세트.

    실패: NowDataError

    다음 코드 예제에서는 이 함수를 호출하는 방법을 보여 줍니다.

    private func fetchArticles() -> AnyPublisher<[Article], ArticleListError> {
      guard let graphQLService = graphQLService else {
        return Fail(error: .invalidGraphQLService).eraseToAnyPublisher()
      }
            
      return graphQLService.publisher(for: GraphQLQuery(query: recentlyPublishedQuery))
        .mapError({ dataError -> ArticleListError in
          .fetchError(dataError)
        })
        .flatMap(dataToArticleList)
        .eraseToAnyPublisher()
    }