NowAPIService-Klasse: iOS

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 6 Minuten Lesedauer
  • Die NowAPIService -Klasse bietet Funktionen, mit denen Sie Anforderungen an eine angegebene ServiceNow REST-API ausführen können.

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

    NowAPIService – data(for endpoint: NowAPIEndpoint, queryItems: [String: String], httpHeaders: [String: String], body: Data, abgeschlossen: @escaping (Result<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 der HTTP-Methode, des relativen Pfads zum Endpunkt, der Pfadparameter und ob eine Authentifizierung erforderlich ist.
    queryItems Array Optional. Abfrageparameter für den Endpunkt als Schlüssel-Wert-Paare.

    Standard: nil

    httpHeaders Array Optional. Fordern Sie HTTP-Kopfzeilen an, die vom Endpunkt als Schlüssel-Wert-Paare erforderlich sind.

    Standard: nil

    body Zeichenfolge Optional. Anforderungstextparameter.

    Standard: nil

    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, die die zurückgegebenen Daten aus dem REST-API-Aufruf enthält.
    • Fehler: NowDataError
      • accessToken (AccessTokenProviderError)
        • AccessTokenProviderError: Fehlercode oder Meldung des Zugriffstokenanbieters.
          • accessTokenRetrievalFailed
          • userSessionError (_ Fehler: Fehler)

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

      • AnhangValidierung

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

      • schlechteAntwort (statusCode: HTTPStatusCode)
        • HTTPStatusCode: Statuscode von der Instanz empfangen.

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

      • kann nichtDecodeModel(DecodingError)
        • 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, um aus einer Zeichenfolge zu decodieren.
        • from: Zeichenfolge, die in den angegebenen Typ decodiert werden soll.

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

      • kann nichtEncodeModel(EncodingError)
        • EncodingError: Codierungsfehler erkannt.

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

      • kann nichtParseResponse

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

      • ungültige URL

        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 eine leere Zeichenfolge ist.

      • fehlendeAttachmentMetadata

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

      • fehltServiceConfiguration

        Wird ausgelöst, wenn eine erwartete Servicekonfiguration fehlt.

      • fehlendeSysID

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

      • network (NetworkServiceError)
        • genericError(Zeichenfolge)
        • Vorgang abgebrochen
        • service​Deaktiviert
        • serverError (Fehler)
        • systemError (Fehler)

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

    Tabelle : 3. Ergebnisse
    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 – data(for endpoint: NowAPIEndpoint, queryItems: [String: String], httpHeaders: [String: String], body: Data) async wirft

    Fordert Daten von der angegebenen ServiceNow REST API an.

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

    Standard: nil

    httpHeaders Array Optional. Fordern Sie die für den Endpunkt erforderlichen HTTP-Kopfzeilen als Schlüssel-Wert-Paarean.

    Standard: nil

    body Zeichenfolge Optional. Anforderungs-BODy-Parameterrs.

    Standard: nil

    Tabelle : 5. Ergebnisse
    Typ Beschreibung
    Datenantwort Wird zurückgegeben, wenn die Methode erfolgreich ist. Daten aus dem REST-API-Aufruf.
    NowDataError Wird ausgelöst, wenn die Methode fehlschlägt.
    • accessToken (AccessTokenProviderError)
      • AccessTokenProviderError: Fehlercode oder Meldung des Zugriffstokenanbieters.
        • accessTokenRetrievalFailed
        • userSessionError (_ Fehler: Fehler)

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

    • AnhangValidierung

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

    • schlechteAntwort (statusCode: HTTPStatusCode)
      • HTTPStatusCode: Statuscode von der Instanz empfangen.

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

    • kann nichtDecodeModel(DecodingError)
      • 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, um aus einer Zeichenfolge zu decodieren.
      • from: Zeichenfolge, die in den angegebenen Typ decodiert werden soll.

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

    • kann nichtEncodeModel(EncodingError)
      • EncodingError: Codierungsfehler erkannt.

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

    • kann nichtParseResponse

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

    • ungültige URL

      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 eine leere Zeichenfolge ist.

    • fehlendeAttachmentMetadata

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

    • fehltServiceConfiguration

      Wird ausgelöst, wenn eine erwartete Servicekonfiguration fehlt.

    • fehlendeSysID

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

    • network (NetworkServiceError)
      • genericError(Zeichenfolge)
      • Vorgang abgebrochen
      • 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(for endpoint: NowAPIEndpoint, queryItems: [String: String]? = nil, httpHeaders: [String: String]? = nil, body: Data? = nil)

    Fordert Daten von der angegebenen ServiceNow REST API an.

    Hinweis:
    Diese Methode ist veraltet. Sie sollten stattdessen die async/wait-Implementierung der Methode 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 der HTTP-Methode, des relativen Pfads zum Endpunkt, der Pfadparameter und ob eine Authentifizierung erforderlich ist.
    queryItems Array Optional. Abfrageparameter für den Endpunkt als Schlüssel-Wert-Paare.

    Standard: nil

    httpHeaders Array Optional. Fordern Sie HTTP-Kopfzeilen an, die vom Endpunkt als Schlüssel-Wert-Paare erforderlich sind.

    Standard: nil

    body Daten Optional. Anforderungstextparameter.

    Standard: nil

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

    Fehler: NowDataError

    • accessToken (AccessTokenProviderError)
      • AccessTokenProviderError: Fehlercode oder Meldung des Zugriffstokenanbieters.
        • accessTokenRetrievalFailed
        • userSessionError (_ Fehler: Fehler)

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

    • AnhangValidierung

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

    • schlechteAntwort (statusCode: HTTPStatusCode)
      • HTTPStatusCode: Statuscode von der Instanz empfangen.

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

    • kann nichtDecodeModel(DecodingError)
      • 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, um aus einer Zeichenfolge zu decodieren.
      • from: Zeichenfolge, die in den angegebenen Typ decodiert werden soll.

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

    • kann nichtEncodeModel(EncodingError)
      • EncodingError: Codierungsfehler erkannt.

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

    • kann nichtParseResponse

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

    • ungültige URL

      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 eine leere Zeichenfolge ist.

    • fehlendeAttachmentMetadata

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

    • fehltServiceConfiguration

      Wird ausgelöst, wenn eine erwartete Servicekonfiguration fehlt.

    • fehlendeSysID

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

    • network (NetworkServiceError)
      • genericError(Zeichenfolge)
      • Vorgang abgebrochen
      • 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)
    }