Classe NowGraphQLService : iOS

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 3 minutes de lecture
  • La classe NowGraphQLService fournit des fonctions qui vous permettent d’effectuer des requêtes à l’aide de requêtes GraphQL sur des données de votre ServiceNow instance via son API REST GraphQL .

    Tableau 1. Propriétés
    Nom Type Description
    configuration Configuration Now ServiceConfiguration Paramètres de configuration fournis lors de l’initialisation du service.

    NowGraphQLService : execute(query : GraphQLQuery) lèves asynchrones

    Exécute la requête GraphQL spécifiée.

    Tableau 2. Paramètres
    Nom Type Description
    requête Chaîne Requête GraphQL à exécuter.
    Tableau 3. Renvoie
    Type Description
    Données Renvoyé lorsque la méthode réussit. Données de requête générées à partir de la requête spécifiée.
    NowDataError (en anglais seulement) Levée lorsque la méthode échoue.
    • accessToken (AccessTokenProviderError)
      • AccessTokenProviderError: code d’erreur ou message du fournisseur du jeton d’accès.
        • accessTokenRetrievalFailed
        • userSessionError(_ error : Erreur)

      Levée lorsqu’une erreur se produit dans le jeton d’accès.

    • attachmentValidation

      Levée lorsqu’une pièce jointe échoue à la validation.

    • badResponse(statusCode : HTTPStatusCode)
      • HTTPStatusCode: code d’état reçu de l’instance.

      Levée lorsqu’une demande renvoie une réponse inattendue

    • cannotDecodeModel(DecodingError)
      • DecodingError: erreur de décodage détectée.

      Levée lorsqu’un modèle codable ne peut pas être décodé à partir de JSON.

    • cannotDecodeProperty(type : N’importe lequel, de : Chaîne)
      • type: type enveloppé à décoder à partir d’une chaîne.
      • from: Chaîne à décoder vers le type spécifié.

      Levée lorsqu’une valeur enveloppée dans une chaîne ne peut pas être décodée à partir de JSON.

    • cannotEncodeModel(EncodingError)
      • EncodingError: Erreur d’encodage détectée.

      Levée lorsqu’un modèle codable ne peut pas être encodé en JSON.

    • cannotParseResponse (en anglais seulement)

      Levée lorsqu’une réponse de l’instance ne peut pas être analysée dans son format attendu.

    • URL non valide

      Levée lorsqu’une URL ne peut pas être formée. Par exemple, si la chaîne contient des caractères illégaux dans une URL ou est une chaîne vide.

    • missingAttachmentMetadata

      Levée lorsque l’en-tête des métadonnées de la pièce jointe est manquant.

    • missingServiceConfiguration

      Levée lorsqu’une configuration de service attendue est manquante.

    • missingSysID

      Levée lorsqu’un paramètre de sys_id attendu est manquant.

    • réseau (NetworkServiceError)
      • genericError(chaîne)
      • opérationannulée
      • serviceDisabled
      • serverError(Erreur)
      • systemError(Erreur)

      Levée lorsqu’un service réseau rencontre une erreur.

    L’exemple de code suivant montre comment appeler cette méthode.

    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(query : GraphQLQuery, completion : @escaping (Result<Data, NowDataError>))

    Exécute la requête GraphQL spécifiée.

    Tableau 4. Paramètres
    Nom Type Description
    requête Chaîne Requête GraphQL à exécuter.
    achèvement @escaping (Result<Data, NowDataError>) Gestionnaire de complétion à exécuter une fois la requête terminée.
    Valeurs de retour :
    • Réussite : renvoie les données de la requête.
    • Erreur : NowDataError
    Tableau 5. Renvoie
    Type Description
    Aucun

    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)

    Crée un service NowGraphQLS en fonction des paramètres spécifiés.

    Tableau 6. Paramètres
    Nom Type Description
    configuration Configuration Now ServiceConfiguration Paramètres de configuration à utiliser lors de l’initialisation du service, tels que l’ID de lot de l’application qui s’intègre au service et l’URL de l’instance ServiceNow à laquelle le service NowGraphQLS souhaite accéder.
    coreServiceProvider (en anglais seulement) NowCoreServiceProviding Facultatif. Fournisseur de service principal.
    Remarque :
    Actuellement, ce paramètre est requis même s’il est affiché comme facultatif.

    Par défaut : nul

    NowGraphQLService – éditeur (pour la requête : GraphQLQuery)

    Crée un éditeur pour demander des données GraphQL.

    Remarque :
    Cette méthode a été déconseillée. Vous devez utiliser l’implémentation async/await de la méthode à la place.
    Tableau 7. Paramètres
    Nom Type Description
    pour la requête GraphQLQuery Chaîne de requête GraphQL à exécuter.
    Tableau 8. Renvoie
    Type Description
    AnyPublisher<Data, NowDataError> Réussite : ensemble de données GraphQL.

    Échec : NowDataError

    L’exemple de code suivant montre comment appeler cette fonction.

    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()
    }