NowAPIService-Klasse – iOS

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 6 Minuten Lesedauer
  • Die Klasse NowAPIService stellt Funktionen bereit, mit denen Sie Anforderungen an eine angegebene ServiceNow -REST-API durchführen können.

    Tabelle : 1. Eigenschaften
    Name Typ Beschreibung
    konfigurieren NowServiceKonfiguration Servicekonfiguration, die dem Protokoll zugeordnet werden soll.

    NowAPIService – data(für Endpunkt: NowAPIEndpoint, Abfrageelemente: [Zeichenfolge: Zeichenfolge], httpHeaders: [Zeichenfolge: Zeichenfolge], Textkörper: Daten, Abschluss: @escaping (Ergebnis<DataResponse, NowDataError> )

    Fordert Daten von der angegebenen ServiceNow -REST-API an und führt dann den Abschluss-Handler aus.

    Tabelle : 2. Parameter
    Name Typ Beschreibung
    für Endpunkt NowAPIEndpoint Objekt, das den ServiceNow REST-API-Endpunkt für den Zugriff enthält, einschließlich HTTP-Methode, relativer Pfad zum Endpunkt, Pfadparameter und Angabe, ob eine Authentifizierung erforderlich ist.
    Abfrageelemente Array Optional. Abfrageparameter für den Endpunkt als Schlüssel-Wert-Paare.

    Standard: null

    httpHeaders Array Optional. HTTP-Header der Anforderung, die vom Endpunkt als Schlüssel-Wert-Paare benötigt werden.

    Standard: null

    body Zeichenfolge Optional. Parameter des Anforderungstexts.

    Standard: null

    Abschluss @escaping (Ergebnis<DataResponse, NowDataError> ) Abschluss-Handler, der nach Abschluss des REST-API-Aufrufs ausgeführt werden soll.
    Rückgabewerte für den Abschluss-Handler:
    • Erfolg: DataResponse, das die vom REST-API-Aufruf zurückgegebenen Daten enthält.
    • Fehler: NowDataError
      • Zugriffstoken(ZugriffstokenProviderError)
        • AccessTokenProviderError: Fehlercode oder Meldung des Zugriffstokenanbieters.
          • „accessTokenRetrieval“ fehlgeschlagen
          • userSessionError(_ Fehler: Fehler)

        Wird ausgelöst, wenn im Zugriffstoken ein Fehler vorliegt.

      • „attachmentValidation“

        Wird ausgelöst, wenn die Validierung eines Anhangs fehlschlägt.

      • _badResponse(statusCode: HTTPStatusCode)
        • HTTPStatusCode: Statuscode, der von der Instanz empfangen wurde.

        Wird ausgelöst, wenn eine Anforderung eine unerwartete Antwort zurückgibt

      • kann nichtDecodeModell(Decodierungsfehler)
        • DecodingError: Decodierungsfehler erkannt.

        Wird ausgelöst, wenn ein codierbares Modell nicht aus JSON decodiert werden kann.

      • kann nichtDecodeProperty(Typ: Beliebig, von: Zeichenfolge)
        • type: Umschlossener Typ zum Decodieren aus einer Zeichenfolge.
        • from: Zeichenfolge, die in den angegebenen Typ decodiert werden soll.

        Wird ausgelöst, wenn ein Wert mit Zeichenfolgenumbruch nicht aus JSON decodiert werden kann.

      • kann nicht EncodeModel (EncodingError)
        • EncodingError: Codierungsfehler erkannt.

        Wird ausgelöst, wenn ein codierbares Modell nicht in JSON codiert werden kann.

      • kannAntwort nichtParse

        Wird ausgelöst, wenn eine Antwort von der Instanz nicht im erwarteten Format analysiert werden kann.

      • ungültigeURL

        Wird ausgelöst, wenn eine URL nicht gebildet werden kann. Zum Beispiel, wenn die Zeichenfolge Zeichen enthält, die in einer URL unzulässig sind, oder ob es sich um eine leere Zeichenfolge handelt.

      • FehlendeAttachmentMetadata

        Wird ausgelöst, wenn der Header der Anhangmetadaten fehlt.

      • fehltServiceKonfiguration

        Wird ausgelöst, wenn eine erwartete Servicekonfiguration fehlt.

      • fehltSysID

        Wird ausgelöst, wenn ein erwarteter sys_id-Parameter fehlt.

      • Netzwerk(NetzwerkServiceFehler)
        • generischeError(Zeichenfolge)
        • VorgangAbgebrochen
        • service Deaktiviert
        • serverError(Fehler)
        • systemError(Fehler)

        Wird ausgelöst, wenn bei einem Netzwerkservice ein Fehler aufgetreten ist.

    Tabelle : 3. Rückgaben
    Typ Beschreibung
    Keine

    Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.

    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 – Daten (für Endpunkt: NowAPIEndpoint, Abfrageelemente: [Zeichenfolge: Zeichenfolge], httpHeaders: [Zeichenfolge: Zeichenfolge], Textkörper: Daten) lösen asynchrone Aktionen aus

    Fordert Daten von der angegebenen ServiceNow REST API an.

    Tabelle : 4. Parameter
    Name Typ Beschreibung
    für Endpunkt NowAPIEndpoint Objekt mit dem Zugriff auf den ServiceNow REST-API-Endpunkt für, einschließlich HTTP-Methode, relativer Pfad zum Endpunkt, Pfadparameter und Angabe, ob eine Authentifizierung erforderlich ist.
    Abfrageelemente Array Optional. Abfrageparameter für den Endpunkt als Schlüssel-Wert-Paare.

    Standard: null

    httpHeaders Array Optional. Für den Endpunkt erforderliche HTTP-Header als Schlüssel-Wert-Paareanfordern.

    Standard: null

    body Zeichenfolge Optional. Anforderungstexty Parameterrs.

    Standard: null

    Tabelle : 5. Rückgaben
    Typ Beschreibung
    DataResponse Wird zurückgegeben, wenn die Methode erfolgreich ist. Daten aus dem REST-API-Aufruf
    NowDataError Wird ausgelöst, wenn die Methode fehlschlägt.
    • Zugriffstoken(ZugriffstokenProviderError)
      • AccessTokenProviderError: Fehlercode oder Meldung des Zugriffstokenanbieters.
        • „accessTokenRetrieval“ fehlgeschlagen
        • userSessionError(_ Fehler: Fehler)

      Wird ausgelöst, wenn im Zugriffstoken ein Fehler vorliegt.

    • „attachmentValidation“

      Wird ausgelöst, wenn die Validierung eines Anhangs fehlschlägt.

    • _badResponse(statusCode: HTTPStatusCode)
      • HTTPStatusCode: Statuscode, der von der Instanz empfangen wurde.

      Wird ausgelöst, wenn eine Anforderung eine unerwartete Antwort zurückgibt

    • kann nichtDecodeModell(Decodierungsfehler)
      • DecodingError: Decodierungsfehler erkannt.

      Wird ausgelöst, wenn ein codierbares Modell nicht aus JSON decodiert werden kann.

    • kann nichtDecodeProperty(Typ: Beliebig, von: Zeichenfolge)
      • type: Umschlossener Typ zum Decodieren aus einer Zeichenfolge.
      • from: Zeichenfolge, die in den angegebenen Typ decodiert werden soll.

      Wird ausgelöst, wenn ein Wert mit Zeichenfolgenumbruch nicht aus JSON decodiert werden kann.

    • kann nicht EncodeModel (EncodingError)
      • EncodingError: Codierungsfehler erkannt.

      Wird ausgelöst, wenn ein codierbares Modell nicht in JSON codiert werden kann.

    • kannAntwort nichtParse

      Wird ausgelöst, wenn eine Antwort von der Instanz nicht im erwarteten Format analysiert werden kann.

    • ungültigeURL

      Wird ausgelöst, wenn eine URL nicht gebildet werden kann. Zum Beispiel, wenn die Zeichenfolge Zeichen enthält, die in einer URL unzulässig sind, oder ob es sich um eine leere Zeichenfolge handelt.

    • FehlendeAttachmentMetadata

      Wird ausgelöst, wenn der Header der Anhangmetadaten fehlt.

    • fehltServiceKonfiguration

      Wird ausgelöst, wenn eine erwartete Servicekonfiguration fehlt.

    • fehltSysID

      Wird ausgelöst, wenn ein erwarteter sys_id-Parameter fehlt.

    • Netzwerk(NetzwerkServiceFehler)
      • generischeError(Zeichenfolge)
      • VorgangAbgebrochen
      • service Deaktiviert
      • serverError(Fehler)
      • systemError(Fehler)

      Wird ausgelöst, wenn bei einem Netzwerkservice ein Fehler aufgetreten ist.

    Die folgenden Codebeispiele zeigen, wie diese Methode aufgerufen wird.

    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(für Endpunkt: NowAPIEndpoint, Abfrageelemente: [Zeichenfolge: Zeichenfolge]? = Null, httpHeaders: [Zeichenfolge: Zeichenfolge]? = Null, Textkörper: Daten? = Null)

    Fordert Daten von der angegebenen ServiceNow REST API an.

    Hinweis:
    Diese Methode ist veraltet. Sie sollten stattdessen die Implementierung der Methode „async/wait“ verwenden.
    Tabelle : 6. Parameter
    Name Typ Beschreibung
    für Endpunkt NowAPIEndpoint Objekt, das den ServiceNow REST-API-Endpunkt für den Zugriff enthält, einschließlich HTTP-Methode, relativer Pfad zum Endpunkt, Pfadparameter und Angabe, ob eine Authentifizierung erforderlich ist.
    Abfrageelemente Array Optional. Abfrageparameter für den Endpunkt als Schlüssel-Wert-Paare.

    Standard: null

    httpHeaders Array Optional. HTTP-Header der Anforderung, die vom Endpunkt als Schlüssel-Wert-Paare benötigt werden.

    Standard: null

    body Daten Optional. Parameter des Anforderungstexts.

    Standard: null

    Tabelle : 7. Rückgaben
    Typ Beschreibung
    Beliebiger Herausgeber<DataResponse, NowDataError> Erfolg: Von der REST-API zurückgegebene Daten.

    Fehler: NowDataError

    • Zugriffstoken(ZugriffstokenProviderError)
      • AccessTokenProviderError: Fehlercode oder Meldung des Zugriffstokenanbieters.
        • „accessTokenRetrieval“ fehlgeschlagen
        • userSessionError(_ Fehler: Fehler)

      Wird ausgelöst, wenn im Zugriffstoken ein Fehler vorliegt.

    • „attachmentValidation“

      Wird ausgelöst, wenn die Validierung eines Anhangs fehlschlägt.

    • _badResponse(statusCode: HTTPStatusCode)
      • HTTPStatusCode: Statuscode, der von der Instanz empfangen wurde.

      Wird ausgelöst, wenn eine Anforderung eine unerwartete Antwort zurückgibt

    • kann nichtDecodeModell(Decodierungsfehler)
      • DecodingError: Decodierungsfehler erkannt.

      Wird ausgelöst, wenn ein codierbares Modell nicht aus JSON decodiert werden kann.

    • kann nichtDecodeProperty(Typ: Beliebig, von: Zeichenfolge)
      • type: Umschlossener Typ zum Decodieren aus einer Zeichenfolge.
      • from: Zeichenfolge, die in den angegebenen Typ decodiert werden soll.

      Wird ausgelöst, wenn ein Wert mit Zeichenfolgenumbruch nicht aus JSON decodiert werden kann.

    • kann nicht EncodeModel (EncodingError)
      • EncodingError: Codierungsfehler erkannt.

      Wird ausgelöst, wenn ein codierbares Modell nicht in JSON codiert werden kann.

    • kannAntwort nichtParse

      Wird ausgelöst, wenn eine Antwort von der Instanz nicht im erwarteten Format analysiert werden kann.

    • ungültigeURL

      Wird ausgelöst, wenn eine URL nicht gebildet werden kann. Zum Beispiel, wenn die Zeichenfolge Zeichen enthält, die in einer URL unzulässig sind, oder ob es sich um eine leere Zeichenfolge handelt.

    • FehlendeAttachmentMetadata

      Wird ausgelöst, wenn der Header der Anhangmetadaten fehlt.

    • fehltServiceKonfiguration

      Wird ausgelöst, wenn eine erwartete Servicekonfiguration fehlt.

    • fehltSysID

      Wird ausgelöst, wenn ein erwarteter sys_id-Parameter fehlt.

    • Netzwerk(NetzwerkServiceFehler)
      • generischeError(Zeichenfolge)
      • VorgangAbgebrochen
      • service Deaktiviert
      • serverError(Fehler)
      • systemError(Fehler)

      Wird ausgelöst, wenn bei einem Netzwerkservice ein Fehler aufgetreten ist.

    Das folgende Codebeispiel zeigt, wie diese Funktion aufgerufen wird.

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