Einsicht

REST oder nicht REST API in OneStream

Wenn Sie eine direkte Verbindung zwischen Ihren Quellsystemen und der OneStream-Umgebung ohne komplizierte Netzwerkkonfigurationen oder wartungsanfälliges IP-Whitelisting herstellen möchten, ist die REST-API Ihre beste Wahl. Immer mehr Kunden nutzen die REST-API-Technologie, um ihre Datenintegration zu automatisieren und Prozesse schneller und einfacher zu gestalten. Die RESTful-API oder REST-API verwendet HTTP-Anfragen, um direkt mit anderen Webdiensten zu kommunizieren, ohne zusätzliche Änderungen am Netzwerk vorzunehmen. Diese Verbindung funktioniert also sofort, ohne zusätzliche Änderungen an der Infrastruktur!

Um die RESTful-API-Technologie innerhalb der OneStream-Plattform zu nutzen, kann eine Extensibility Business Rule erstellt werden, die diese Anfragen ausführt.

REST-Anfrage

Der folgende Codeausschnitt zeigt ein Beispiel für eine parametrisierte REST API POST-Anforderung:

Using client As New HttpClient()
'  Autorisierungs-Headersetzen
       client.DefaultRequestHeaders.Add("Authorisation", "Bearer " & sBearerToken)
' Anfragekörper erstellen
   Dim dRestAPIParameters As New Dictionary(Of String, Object)()
   dRestAPIParameters.Add("Zeitraum", "2024M10")
   dRestAPIParameters.Add("Entity", "Groningen")
                
   ' Konvertieren Sie den Request Body in das korrekte Format, application/json in UTF8
    Dim jsonRestAPIParameters As String = JsonConvert.SerializeObject(dRestAPIParameters)
     Dim content As New StringContent(jsonRestAPIParameters, Encoding.UTF8, "application/json") 
    
     'POST-Anfrage senden
    Try
           Dim response As HttpResponseMessage = client.PostAsync(url, content).Result
                    
       'Wenn die Anfrage erfolgreich ist 
                    If response.IsSuccessStatusCode Then
                        Dim responseBody As String = response.Content.ReadAsStringAsync().Result
                        If responseBody.Length > 0 Then
                            Return JObject.Parse(responseBody)("Status")
                        Else 'responseBody.Length > 0
                           Throw New XFException($"{response.StatusCode} - {response.ReasonPhrase}")
                           Return Nothing
                       
 E nd If 'responseBody.Length > 0 
        'Wenn die Anfrage fehlschlägt   
        Else 'response.IsSuccessStatusCode
                        Throw New XFException($"{response.StatusCode} - {response.ReasonPhrase}") 
                        Return Nothing
                    End If 'response.IsSuccessStatusCode
                    
               Catch ex As Exception
                   Throw ErrorHandler.LogWrite(si, New XFException(si, ex))
               End Try
End Using 'client As New HttpClient()

Die POST-Anforderung kann als Auslöser für die Generierung bestimmter Datensätze auf der Grundlage der in der Anforderung angegebenen Parameter dienen. Nachdem dieser Datensatz generiert wurde, kann eine GET REST API verwendet werden, um den eigentlichen Datensatz im JSON-Format abzurufen und direkt in die OneStream-Importschritte Ihrer Workflows zu importieren.

Sicherheit

Der offensichtliche Nachteil dieser REST-API besteht darin, dass sie direkt über das Internet zugänglich ist, was eine sichere Verbindung erforderlich macht. Eine einfache Kombination aus nativem Benutzernamen und Passwort (Basic Authentication Header) reicht möglicherweise nicht mehr aus. Für unsere Kunden haben wir OneStream so konfiguriert, dass bessere Authentifizierungsmethoden zur Überprüfung von REST-API-Anfragen verwendet werden.

Ein Beispiel für eine dieser Methoden ist das OAUTH-2.0-Protokoll. Dieses verwendet ein sogenanntes Authentifizierungs-Token, das es den Benutzern ermöglicht, auf APIs zuzugreifen, ohne jedes Mal ihre Anmeldedaten erneut eingeben zu müssen. Um das OAuth-Authentifizierungs-Token zu erhalten, kann dieselbe Extensibility Business Rule verwendet werden, bei der ein einfacher Benutzername und ein Passwort übergeben werden, um schließlich ein Token zu erhalten. Dieser Token-String kann dann als Bearer Token-Eigenschaft im Authorisation-Header der ursprünglichen Anfrage verwendet werden.

Der folgende Codeausschnitt zeigt ein Beispiel für eine REST-API-POST-Anfrage, bei der die Antwort das generierte OAuth-Zugangs-Token enthält.

' Define basic credential header for request
Dim sUsername As String = "JWisAwesome"
Dim sPassword As String = "S@nd3r1sG3k"
Dim credentials As String = Convert.ToBase64String(Encoding.ASCII.GetBytes(sUsername & ":" & sPassword))
	
' Create OAuth token request
Using client As New HttpClient()
	'Create the Header of the request
	client.DefaultRequestHeaders.Add("Authorization", "Basic " & credentials)
	'Create the Body of the request
	Dim postbody As String = "grant_type=" + "client_credentials" + "&scope=" + "https://graph.microsoft.com/.default"
	Dim content As New StringContent(postbody, Encoding.UTF8, "application/x-www-form-urlencoded")
				
	' Send POST request to Oracle Cloud
	Try
	      Dim response As HttpResponseMessage = client.PostAsync(url, content).Result
					
  	      'If the request is successful 
	        If response.IsSuccessStatusCode Then
	                    Dim responseBody As String = response.Content.ReadAsStringAsync().Result
	
	                    If responseBody.Length > 0 Then
  			Return JObject.Parse(responseBody)("access_token")
	                    Else 'responseBody.Length > 0
	                        	Throw New XFException($"{response.StatusCode} - {response.ReasonPhrase}")
	                        	Return Nothing
	                    End If 'responseBody.Length > 0
	                
		'If the request failed
	        Else 'response.IsSuccessStatusCode
	                    Throw New XFException($"{response.StatusCode} - {response.ReasonPhrase}")
	                    Return Nothing
	         End If 'response.IsSuccessStatusCode
	   Catch ex As Exception
	                Throw ErrorHandler.LogWrite(si, New XFException(si, ex))
	   End Try
End Using 'client As New HttpClient()

Dies ist nur ein Beispiel für eine REST-API in OneStream. Die Möglichkeiten der Integration von RESTful-Technologie in die OneStream-Plattform sind endlos.

Schlussfolgerung

Wenn Sie es leid sind, CSV-Dateien manuell von einem System in ein anderes zu übertragen, und mehr über das Potenzial der REST-API in Kombination mit OneStream zur Automatisierung der Integration erfahren möchten, zögern Sie nicht, mich oder meine Kollegen zu kontaktieren.

Autor
Thema
Keine Artikel gefunden.
Thema
Keine Artikel gefunden.
Technologie
Industrie
Keine Artikel gefunden.