Classe NowAPIService : iOS

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 7 minutes de lecture
  • La classe NowAPIService fournit des fonctions qui vous permettent d’effectuer des demandes pour une API REST spécifiée ServiceNow .

    Tableau 1. Propriétés
    Nom Type Description
    configuration Configuration Now ServiceConfiguration Configuration du service à associer au protocole.

    NowAPIService – data(for endpoint : NowAPIEndpoint, queryItems : [String : String], httpHeaders : [String : String], body : Data, completeion : @escaping (Result<DataResponse, NowDataError>)

    Demande des données 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 l’API ServiceNow REST auquel accéder, y compris la méthode HTTP, le chemin relatif au point de terminaison, les paramètres du chemin d’accès et si une authentification est requise.
    éléments requeryItems Tableau Facultatif. Interroger les paramètres du point de terminaison sous forme de paires clé/valeur.

    Par défaut : nul

    En-têtes de http Tableau Facultatif. Demander les en-têtes HTTP requis par le point de terminaison en tant que paires clé/valeur.

    Par défaut : nul

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

    Par défaut : nul

    achèvement @escaping (Result<DataResponse, NowDataError>) Gestionnaire de complétion à exécuter une fois l’appel d’API REST terminé.
    Valeurs de retour 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 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.

    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 : données (pour le point de terminaison : NowAPIEndpoint, queryItems : [String : String], httpHeaders : [String : String], body : Data) Levages 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 du chemin d’accès et si une authentification est requise.
    éléments requeryItems Tableau Facultatif. Interroger les paramètres du point de terminaison sous forme de paires clé/valeur.

    Par défaut : nul

    En-têtes de http Tableau Facultatif. Demander les en-têtes HTTP requis par le point de terminaison en tant que paires clé/valeur.

    Par défaut : nul

    body Chaîne Facultatif. Demander body parameters.

    Par défaut : nul

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

    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 utiliser l’implémentation async/await de la méthode à la place.
    Tableau 6. Paramètres
    Nom Type Description
    pour le 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 relatif au point de terminaison, les paramètres du chemin d’accès et si une authentification est requise.
    éléments requeryItems Tableau Facultatif. Interroger les paramètres du point de terminaison sous forme de paires clé/valeur.

    Par défaut : nul

    En-têtes de http Tableau Facultatif. Demander les en-têtes HTTP requis par le point de terminaison en tant que paires clé/valeur.

    Par défaut : nul

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

    Par défaut : nul

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

    Échec : NowDataError

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