NowAPIService Class : iOS

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 6 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 : [String : String], httpHeaders : [String : String], body : Data, completion : @escaping (Result<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 le point de terminaison NowAPIEndpoint Objet contenant le point de terminaison de REST ServiceNow API 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.

    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.

    Valeur par défaut : néant

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

    Valeur par défaut : néant

    achèvement @escaping (Result<DataResponse, NowDataError>) Gestionnaire d’achèvement à exécuter une fois l’appel de REST API terminé.
    Valeurs renvoyées pour le gestionnaire de complétion :
    • Réussite : DataResponse qui contient les données renvoyées par l’appel d’API REST.
    • Échec : NowDataError
      • 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.

    Tableau 3. Renvoie
    Type Description
    Aucun

    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 : [String : String], httpHeaders : [String : String], body : Data) Levées asynchrones

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

    Tableau 4. Paramètres
    Nom Type Description
    pour le point de terminaison NowAPIEndpoint Objet contenant le point de terminaison de l’API ServiceNow REST poury 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.

    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.

    Valeur par défaut : néant

    body Chaîne Facultatif. Demande body parameters.

    Valeur par défaut : néant

    Tableau 5. Renvoie
    Type Description
    Réponse de données Renvoyé en cas de réussite de la méthode. Données de l’appel d’API REST.
    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.

    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(for endpoint : NowAPIEndpoint, queryItems : [String : String] ? = nil, httpHeaders : [String : String] ? = nil, body : Data ? = nil)

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

    Remarque :
    Cette méthode a été déconseillée. Vous devez plutôt utiliser l’implémentation async/await de la méthode.
    Tableau 6. Paramètres
    Nom Type Description
    pour le point de terminaison NowAPIEndpoint Objet contenant le point de terminaison de REST ServiceNow API 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.

    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.

    Valeur par défaut : néant

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

    Valeur 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: 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 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)
    }