Classe NowGraphQLService : iOS

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 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 les données de votre ServiceNow instance via son API REST GraphQL .

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

    NowGraphQLService : execute(query : GraphQLQuery) Levées 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é en cas de réussite de la méthode. Données de requête générées à partir de la requête spécifiée.
    NowDataError Levée en cas d’échec de la méthode.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: code ou message d’erreur du fournisseur du jeton d’accès.
        • accessTokenRetrievalFailed
        • userSessionError(_ error : Erreur)

      Lancé en cas d’erreur dans le jeton d’accès.

    • Validation de l’attachement

      Déclenché lorsqu’une pièce jointe échoue à la validation.

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

      Émise lorsqu’une demande renvoie une réponse inattendue

    • cannotDecodeModel(Erreur de décodage)
      • 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 : Tout, depuis : Chaîne)
      • type: type encapsulé à décoder à partir d’une chaîne.
      • from: chaîne à décoder selon le type spécifié.

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

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

      Publié lorsqu’un modèle codable ne peut pas être codé au format JSON.

    • cannotParseResponse

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

    • URL invalide

      Émise 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 s’il s’agit d’une chaîne vide.

    • missingAttachmentMetadata

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

    • missingServiceConfiguration

      Lancé lorsqu’une configuration de service attendue est manquante.

    • missingSysID

      Déclenché lorsqu’un paramètre de sys_id attendu est manquant.

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

      Lancé lorsqu’un service réseau a rencontré 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, complétion : @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 (résultat<données, NowDataError>) Gestionnaire d’achèvement à exécuter une fois la requête terminée.
    Valeurs renvoyées :
    • 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 basé sur les paramètres spécifiés.

    Tableau 6. Paramètres
    Nom Type Description
    configuration NowServiceConfiguration Paramètres de configuration à utiliser lors de l’initialisation du service, tels que l’ID de lot de l’application s’intégrant au service et l’URL de l’instance ServiceNow à laquelle le service Now GraphQLS veut accéder.
    coreServiceProvider NowCoreServiceProviding Facultatif. Fournisseur de service principal.
    Remarque :
    Actuellement, ce paramètre est requis même s’il est affiché comme facultatif.

    Valeur par défaut : néant

    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 plutôt utiliser l’implémentation async/await de la méthode.
    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()
    }