Classe de service NowAPIService : iOS

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 7 minutes de lecture
  • La classe NowAPIService fournit des fonctions qui vous permettent d’effectuer des demandes à une API REST spécifiée ServiceNow .

    Tableau 1. Propriétés
    Nom Type Description
    configuration NowServiceConfiguration Configuration de service à associer au protocole.

    NowAPIService : data(for endpoint : NowAPIEndpoint, queryItems : [chaîne : chaîne], httpHeaders : [chaîne : chaîne], corps : données, complétion : @escaping (résultat<DataResponse, NowDataError>)

    Demande des données à partir de l’API REST spécifiée ServiceNow , puis exécute le gestionnaire de complétion.

    Tableau 2. Paramètres
    Nom Type Description
    pour point de terminaison NowAPIEndpoint Objet contenant le point de terminaison de l’API ServiceNow REST auquel accéder, y compris la méthode HTTP, le chemin d’accès relatif au point de terminaison, les paramètres de chemin d’accès et si une authentification est requise.
    Éléments de requête Tableau Facultatif. Interroger les paramètres du point de terminaison sous forme de paires clé/valeur.

    Par défaut : néant

    httpHeaders Tableau Facultatif. En-têtes HTTP de demande requis par le point de terminaison sous forme de paires clé/valeur.

    Par défaut : néant

    body Chaîne Facultatif. Paramètres du corps de la demande.

    Par défaut : néant

    Achèvement @escaping (Result<DataResponse, NowDataError>) Gestionnaire d’achèvement à exécuter à la fin de l’appel d’API REST.
    Valeurs renvoyées pour le gestionnaire de complétion :
    • Réussite : DataResponse contenant les données renvoyées par l’appel d’API REST.
    • Échec : NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: message ou code d’erreur du fournisseur du jeton d’accès.
          • accessTokenRetrievalFailed
          • userSessionError(_ erreur : Erreur)

        Déclenché lorsqu’une erreur s’est produite dans le jeton d’accès.

      • Validation de l’attachement

        Émis 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.

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

      • cannotDecodeProperty(type : Tout, de : Chaîne)
        • type: type encapsulé à décoder à partir d’une chaîne.
        • from: chaîne à décoder au type spécifié.

        Lancé 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 encodé au format JSON.

      • cannotParseResponse

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

      • URL non valide

        É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.

      • Métadonnées de pièce jointe manquante

        Déclenché 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

        Généré lorsqu’un paramètre sys_id attendu est manquant.

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

        Publié lorsqu’un service réseau a rencontré une erreur.

    Tableau 3. Renvoie
    Type Description
    Néant

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

    struct Endpoint: NowAPIEndpoint {
      let httpMethod: HTTPMethod
      let relativePath: String
      let requiresAuthentication: Bool
    }
    
    /// HTTP request method
    public enum HTTPMethod: CaseIterable {
        case options, get, head, post, put, patch, delete, trace, connect
    }
    let relativePath = “/api/now/account”
    let endPoint = Endpoint(httpMethod: HTTPMethod.get, relativePath: relativePath, requiresAuthentication: true)
    
    apiService.data(for: endPoint, queryItems: [“name”: “abel”], httpHeaders: httpHeaders, body: body.data(using: .utf8)) { [weak self] (result) in
      switch result {
        case .success(let response):
        // Data request successful
        case .failure(let error):
        // Data request failed, return NowDataError
        // .failure(error)
      }
    }
    

    NowAPIService : data(for endpoint : NowAPIEndpoint, queryItems : [chaîne : chaîne], httpHeaders : [chaîne : chaîne], corps : données) Lèves asynchrones

    Demande des données à partir de l’API REST spécifiée ServiceNow .

    Tableau 4. Paramètres
    Nom Type Description
    pour point de terminaison NowAPIEndpoint Objet contenant le point de terminaison de l’API ServiceNow REST pourl’accès, y compris la méthode HTTP, le chemin d’accès relatif au point de terminaison, les paramètres de chemin d’accès et si une authentification est requise.
    Éléments de requête Tableau Facultatif. Interroger les paramètres du point de terminaison sous forme de paires clé/valeur.

    Par défaut : néant

    httpHeaders Tableau Facultatif. En-têtes HTTP de demande requis par le point de terminaison sous forme de paires clé/valeur.

    Par défaut : néant

    body Chaîne Facultatif. Request body parameters.

    Par défaut : néant

    Tableau 5. Renvoie
    Type Description
    Réponse de données Renvoyé lorsque la méthode est efficace. Données de l’appel d’API REST.
    NowDataError Lancé en cas d’échec de la méthode.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: message ou code d’erreur du fournisseur du jeton d’accès.
        • accessTokenRetrievalFailed
        • userSessionError(_ erreur : Erreur)

      Déclenché lorsqu’une erreur s’est produite dans le jeton d’accès.

    • Validation de l’attachement

      Émis 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.

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

    • cannotDecodeProperty(type : Tout, de : Chaîne)
      • type: type encapsulé à décoder à partir d’une chaîne.
      • from: chaîne à décoder au type spécifié.

      Lancé 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 encodé au format JSON.

    • cannotParseResponse

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

    • URL non valide

      É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.

    • Métadonnées de pièce jointe manquante

      Déclenché 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

      Généré lorsqu’un paramètre sys_id attendu est manquant.

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

      Publié lorsqu’un service réseau a rencontré une erreur.

    Les exemples de code suivants montrent comment appeler cette méthode.

    do {
        let dataResponse = try await apiService.data(for: endpoint, queryItems: queryItems, httpHeaders: httpHeaders, body: body)
        // Data request successful
    } catch {
        // Data request failed, NowDataError thrown
    }

    NowAPIService : data(pour le point de terminaison : NowAPIEndpoint, queryItems : [chaîne : chaîne] ? = nil, httpHeaders : [chaîne : chaîne] ? = nil, corps : données ? = nul)

    Demande des données à partir de l’API REST spécifiée ServiceNow .

    Remarque :
    Cette méthode est obsolète. Vous devez plutôt utiliser l’implémentation async/await de la méthode.
    Tableau 6. Paramètres
    Nom Type Description
    pour point de terminaison NowAPIEndpoint Objet contenant le point de terminaison de l’API ServiceNow REST auquel accéder, y compris la méthode HTTP, le chemin d’accès relatif au point de terminaison, les paramètres de chemin d’accès et si une authentification est requise.
    Éléments de requête Tableau Facultatif. Interroger les paramètres du point de terminaison sous forme de paires clé/valeur.

    Par défaut : néant

    httpHeaders Tableau Facultatif. En-têtes HTTP de demande requis par le point de terminaison sous forme de paires clé/valeur.

    Par défaut : néant

    body Données Facultatif. Paramètres du corps de la demande.

    Par défaut : néant

    Tableau 7. Renvoie
    Type Description
    AnyPublisher<DataResponse, NowDataError> Réussite : données renvoyées par l’API REST.

    Échec : NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: message ou code d’erreur du fournisseur du jeton d’accès.
        • accessTokenRetrievalFailed
        • userSessionError(_ erreur : Erreur)

      Déclenché lorsqu’une erreur s’est produite dans le jeton d’accès.

    • Validation de l’attachement

      Émis 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.

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

    • cannotDecodeProperty(type : Tout, de : Chaîne)
      • type: type encapsulé à décoder à partir d’une chaîne.
      • from: chaîne à décoder au type spécifié.

      Lancé 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 encodé au format JSON.

    • cannotParseResponse

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

    • URL non valide

      É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.

    • Métadonnées de pièce jointe manquante

      Déclenché 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

      Généré lorsqu’un paramètre sys_id attendu est manquant.

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

      Publié lorsqu’un service réseau a rencontré une erreur.

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

    struct Endpoint: NowAPIEndpoint {
        let httpMethod: HTTPMethod
        let relativePath: String
        let requiresAuthentication: Bool
    }
    
    /// HTTP request method
    public enum HTTPMethod: CaseIterable {
        case options, get, head, post, put, patch, delete, trace, connect
    }
    let relativePath = "/api/now/account"
    let endPoint = Endpoint(httpMethod: HTTPMethod.get, relativePath: relativePath, requiresAuthentication: true)
    
    // Using Combine
    apiService.data(for: Endpoint(httpMethod: httpMethod, relativePath: endpointPath, requiresAuthentication: requiresAuthentication), queryItems: queryItems, httpHeaders: httpHeaders, body: body.data(using: .utf8))
      .receive(on: DispatchQueue.main)
      .sink { [weak self] (comp) in
        if case let .failure(error) = comp {
          // Data request failed, return NowDataError
        }
      } receiveValue: { [weak self] (response) in
        // Data request successful
        self?.publish(data: response.data)
      }
      .store(in: &self.subscriptions)
    }