Classe NowAPIService : iOS

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 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 Configuration Now ServiceConfiguration Configuration du 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 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 l’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 : nulle

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

    Valeur par défaut : nulle

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

    Valeur par défaut : nulle

    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 à partir de l’appel d’API REST.
    • Échec : NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: code d’erreur ou message du fournisseur de jeton d’accès.
          • accessTokenRetrievalFailed
          • userSessionError(_ erreur : erreur)

        Levée en cas d’erreur 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 encapsulé à décoder à partir d’une chaîne.
        • from: chaîne à décoder vers le type spécifié.

        Levée lorsqu’une valeur enveloppée de 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

        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 (en anglais seulement)

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

      • missingSysID (en anglais seulement)

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

      • réseau (NetworkServiceError)
        • genericError(chaîne)
        • operationCanceled
        • serviceDésactivé
        • serverError(Erreur)
        • systemError(Erreur)

        Levée 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 : [String : String], httpHeaders : [String : String], body : Data) async lève

    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 auquelaccéder, y compris la méthode HTTP, le chemin relatif au point de terminaison, les paramètres du chemin d’accès et si l’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 : nulle

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

    Valeur par défaut : nulle

    body Chaîne Facultatif. Request body parameters.

    Valeur par défaut : nulle

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

      Levée en cas d’erreur 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 encapsulé à décoder à partir d’une chaîne.
      • from: chaîne à décoder vers le type spécifié.

      Levée lorsqu’une valeur enveloppée de 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

      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 (en anglais seulement)

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

    • missingSysID (en anglais seulement)

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

    • réseau (NetworkServiceError)
      • genericError(chaîne)
      • operationCanceled
      • serviceDésactivé
      • serverError(Erreur)
      • systemError(Erreur)

      Levée 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 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 l’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 : nulle

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

    Valeur par défaut : nulle

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

    Valeur par défaut : nulle

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

    Échec : NowDataError

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

      Levée en cas d’erreur 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 encapsulé à décoder à partir d’une chaîne.
      • from: chaîne à décoder vers le type spécifié.

      Levée lorsqu’une valeur enveloppée de 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

      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 (en anglais seulement)

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

    • missingSysID (en anglais seulement)

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

    • réseau (NetworkServiceError)
      • genericError(chaîne)
      • operationCanceled
      • serviceDésactivé
      • serverError(Erreur)
      • systemError(Erreur)

      Levée 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)
    }