NowAPIService-Klasse: IOS

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 6 Minuten Lesedauer
  • Die NowAPIService Die Klasse bietet Funktionen, mit denen Sie Anforderungen für einen angegebenen ausführen können ServiceNow REST-API.

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

    NowAPIService – Data(for Endpunkt: NowAPIEndpoint, queryItems: [Zeichenfolge: Zeichenfolge], httpHeader: [Zeichenfolge: Zeichenfolge], Textkörper: Daten, Abschluss: @Escaping (Ergebnis<DataResponse, NowDataError>)

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

    Tabelle : 2. Parameter
    Name Typ Beschreibung
    Für Endpunkt NowAPIEndpunkt Objekt, das enthält ServiceNow REST-API-Endpunkt, auf den zugegriffen werden soll, einschließlich HTTP-Methode, relativem Pfad zum Endpunkt, Pfadparametern und ob Authentifizierung erforderlich ist.
    QueryItems Array Optional. Abfrageparameter für den Endpunkt als Schlüssel-Wert-Paare.

    Standard: Nil

    HTTP-Header Array Optional. Anforderungs-HTTP-Header, die vom Endpunkt als Schlüssel-Wert-Paare erforderlich sind.

    Standard: Nil

    body Zeichenfolge Optional. Anforderungstext-Parameter.

    Standard: Nil

    Abschluss @Escaping (Result<DataResponse, NowDataError>) Abschlusshandler, der nach Abschluss des REST-API-Aufrufs ausgeführt werden soll.
    Rückgabewerte für den Abschlusshandler:
    • Erfolg: DataResponse, die die vom REST-API-Aufruf zurückgegebenen Daten enthält.
    • Fehler: NowDataError
      • AccessToken(AccessTokenProviderError)
        • AccessTokenProviderError: Fehlercode oder Meldung des Zugriffstoken-Providers.
          • AccessTokenRetrievalFehlgeschlagen
          • UserSessionError(_ Fehler: Fehler)

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

      • 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

      • CannotDecodeModel(DecodingError)
        • DecodingError: Decodierungsfehler erkannt.

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

      • CannotDecodeProperty(Typ: Beliebig, von: Zeichenfolge)
        • type: Umschlossener Typ zum Decodieren aus einer Zeichenfolge.
        • from: Zeichenfolge, die für den angegebenen Typ decodiert werden soll.

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

      • CannotEncodeModel(EncodingError)
        • EncodingError: Codierungsfehler erkannt.

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

      • CannotParseResponse

        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 erstellt werden kann. Beispiel: Wenn die Zeichenfolge Zeichen enthält, die in einer URL ungültig sind oder eine leere Zeichenfolge ist.

      • MissingAttachmentMetadata

        Wird ausgelöst, wenn der Header der Metadaten des Anhangs fehlt.

      • FehlingServiceConfiguration

        Wird ausgelöst, wenn eine erwartete Servicekonfiguration fehlt.

      • FehlingSysID

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

      • Netzwerk (NetzwerkServiceError)
        • GenericError(Zeichenfolge)
        • Operativ abgebrochen
        • Service​deaktiviert
        • ServerError (Fehler)
        • Systemfehler (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, queryItems: [Zeichenfolge: Zeichenfolge], httpHeader: [Zeichenfolge: Zeichenfolge], Textkörper: Daten) asynchrone Auslöse

    Fordert Daten von der angegebenen an ServiceNow REST-API.

    Tabelle : 4. Parameter
    Name Typ Beschreibung
    Für Endpunkt NowAPIEndpunkt Objekt, das enthält ServiceNow REST API-Endpunkt t o Zugriff, einschließlich HTTP-Methode, relativem Pfad zum Endpunkt, Pfadparametern und ob Authentifizierung erforderlich ist.
    QueryItems Array Optional. Abfrageparameter Für den Endpunkt als Schlüssel-Wert-Paare.

    Standard: Nil

    HTTP-Header Array Optional. Anforderungs-HTTP-Header, die für den Endpunkt als erforderlich sind Schlüssel-Wert-Paare .

    Standard: Nil

    body Zeichenfolge Optional. Anforderungsbod y-Parameter rs.

    Standard: Nil

    Tabelle : 5. Rückgaben
    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 Zugriffstoken-Providers.
        • AccessTokenRetrievalFehlgeschlagen
        • UserSessionError(_ Fehler: Fehler)

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

    • 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

    • CannotDecodeModel(DecodingError)
      • DecodingError: Decodierungsfehler erkannt.

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

    • CannotDecodeProperty(Typ: Beliebig, von: Zeichenfolge)
      • type: Umschlossener Typ zum Decodieren aus einer Zeichenfolge.
      • from: Zeichenfolge, die für den angegebenen Typ decodiert werden soll.

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

    • CannotEncodeModel(EncodingError)
      • EncodingError: Codierungsfehler erkannt.

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

    • CannotParseResponse

      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 erstellt werden kann. Beispiel: Wenn die Zeichenfolge Zeichen enthält, die in einer URL ungültig sind oder eine leere Zeichenfolge ist.

    • MissingAttachmentMetadata

      Wird ausgelöst, wenn der Header der Metadaten des Anhangs fehlt.

    • FehlingServiceConfiguration

      Wird ausgelöst, wenn eine erwartete Servicekonfiguration fehlt.

    • FehlingSysID

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

    • Netzwerk (NetzwerkServiceError)
      • GenericError(Zeichenfolge)
      • Operativ abgebrochen
      • Service​deaktiviert
      • ServerError (Fehler)
      • Systemfehler (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 Endpunkt: NowAPIEndpoint, queryItems: [Zeichenfolge: Zeichenfolge]? = Nil, httpHeader: [Zeichenfolge: Zeichenfolge]? = Nil, Textkörper: Daten? = Null)

    Fordert Daten von der angegebenen an ServiceNow REST-API.

    Hinweis:
    Diese Methode ist veraltet. Sie sollten stattdessen die asynchrone/wartet-Implementierung der Methode verwenden.
    Tabelle : 6. Parameter
    Name Typ Beschreibung
    Für Endpunkt NowAPIEndpunkt Objekt, das enthält ServiceNow REST-API-Endpunkt, auf den zugegriffen werden soll, einschließlich HTTP-Methode, relativem Pfad zum Endpunkt, Pfadparametern und ob Authentifizierung erforderlich ist.
    QueryItems Array Optional. Abfrageparameter für den Endpunkt als Schlüssel-Wert-Paare.

    Standard: Nil

    HTTP-Header Array Optional. Anforderungs-HTTP-Header, die vom Endpunkt als Schlüssel-Wert-Paare erforderlich sind.

    Standard: Nil

    body Daten Optional. Anforderungstext-Parameter.

    Standard: Nil

    Tabelle : 7. Rückgaben
    Typ Beschreibung
    AnyPublisher<DataResponse, NowDataError> Erfolg: Daten, die von der REST API zurückgegeben werden.

    Fehler: NowDataError

    • AccessToken(AccessTokenProviderError)
      • AccessTokenProviderError: Fehlercode oder Meldung des Zugriffstoken-Providers.
        • AccessTokenRetrievalFehlgeschlagen
        • UserSessionError(_ Fehler: Fehler)

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

    • 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

    • CannotDecodeModel(DecodingError)
      • DecodingError: Decodierungsfehler erkannt.

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

    • CannotDecodeProperty(Typ: Beliebig, von: Zeichenfolge)
      • type: Umschlossener Typ zum Decodieren aus einer Zeichenfolge.
      • from: Zeichenfolge, die für den angegebenen Typ decodiert werden soll.

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

    • CannotEncodeModel(EncodingError)
      • EncodingError: Codierungsfehler erkannt.

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

    • CannotParseResponse

      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 erstellt werden kann. Beispiel: Wenn die Zeichenfolge Zeichen enthält, die in einer URL ungültig sind oder eine leere Zeichenfolge ist.

    • MissingAttachmentMetadata

      Wird ausgelöst, wenn der Header der Metadaten des Anhangs fehlt.

    • FehlingServiceConfiguration

      Wird ausgelöst, wenn eine erwartete Servicekonfiguration fehlt.

    • FehlingSysID

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

    • Netzwerk (NetzwerkServiceError)
      • GenericError(Zeichenfolge)
      • Operativ abgebrochen
      • Service​deaktiviert
      • ServerError (Fehler)
      • Systemfehler (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)
    }