$customHeader
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Current »


Beschreibung

Der HTTP-Rest-Manager ermöglicht es dem Benutzer, Anforderungen an einen Server zu senden und die zurückgegebene Antwort in einer Variablen zu speichern, und kann mit den Werten in JS arbeiten.

Die folgende Dokumentation zeigt, wie Sie den Dienst auf verschiedenen Wegen aufrufen (Variante 1 und 2). Durch die Nutzung der Funktionalität wird die Anfrage über den Server weitergeleitet, um zu verhindern, dass Cross Site Scripting und z.B. Google Chrome Browser die Anfragedaten aufgrund der CORS-Richtlinie blockieren. 

Voraussetzung: Der ausführende Benutzer/Server der Anwendung (Betriebssystembenutzer, nicht der aktuell angemeldete Benutzer) muss den gewünschten Endpunkt erreichen können.


Variante 1: REST CALL in JS

Beschreibung

Der REST CALL wird vollständig in der JS-Datei verwaltet. Für Änderungen müssen Sie die Datei custom-project.js in Ihrem Ressourcenordner aktualisieren.

Javascript (JavaScript)

jqxhr = jQ.ajax({ 
			url: '/loom-portal/rest/HttpRestManager?<<?>>', 
			type: 'GET', 
		}).success(function(data){ 
			//Function to be called if the request succeeds 
		}).fail(function(data){ 
			//Error Handling 
		});

Beim Aufruf des HttpRestManager über JavaScript muss der Type 'GET' sein.

URL (HTTPRestManager)

URL: '/loom-portal/rest/HttpRestManager?<<PARAMETER>>

Der erste Parameter beginnt mit einem <<?>> alle anderen werden von einem <<&>> hinzugefügt.

Beispiel-URL

$.ajax({
    url: '/loom-portal/rest/HttpRestManager?hostName='+URL+"&method=GET&additionalHeaders=%5B" + "NAME_OF_VARIABLE=" + variable + ";" + "NAME_OF_VARIABLE2=" + variable2 + "%5D",
    type: 'GET',
    success: function(data) {
        if (data.status && data.status == "200") {
        console.log(data);
        }
    }
});

Parameter

Parametername

Standardwert

Beschreibung

Gültige Beispiele

hostName

Dieser Parameter enthält die URl des angeforderten Servers.

https://demo.com/interface/getExampleData

method

“POST”

Dieser Parameter bestimmt, welche Methode remote aufgerufen wird. "Post" bedeutet, dass der Server eine Eingabe im XML-Format erwartet, die er verarbeitet und zurückgibt. "Get" hingegen bedeutet, dass der Server Daten sendet, ohne dass eine Eingabe erforderlich ist.

Other possibilities are “delete”, “get”, “head”, “options”, “patch”, “post”, “put”.

postParameter

Dieser Parameter enthält die Eingabe für den Server im JSON-Format.

"json", "XML", "HTML", "text", "auto"

responseVariable

"SYS.HttpRestManager_response"

Dieser Parameter enthält die Prozessvariable, in der die Serverantwort gespeichert werden soll.

demoResponseVariable

user

Dieser Parameter ist nur erforderlich, wenn der Server eine Identifizierung erfordert und den Benutzernamen des Benutzers enthält.

demoUser

pass

Dieser Parameter wird nur benötigt, wenn der Server eine Identifikation benötigt und das Kennwort des Benutzers enthält.

demoPassword

authMethod

"basic"

Dieser Parameter wird nur benötigt, wenn der Server eine Identifizierung erfordert und die Verschlüsselung enthält, die angewendet werden soll. Eine mögliche Verschlüsselung ist base64, die angewendet wird, indem dieser Parameter auf "basic" gesetzt wird.

"oauth"

"basic"

oAuthTokenUrl

Nur erforderlich, wenn authMethod = "oauth"

URL, von der das oauth-Token abgerufen werden soll.

access

""

Definiert, welche Gruppen oder Benutzer die Schnittstelle aufrufen und Daten daraus abrufen können. Alle anderen Anrufe von nicht autorisierten Benutzern/Gruppen werden abgelehnt. Mehrere Benutzer/Gruppen können über ',' getrennt werden.
Standardmäßig ist die Schnittstelle für alle Benutzer aufrufbar.
Lassen Sie den Parameter leer/undefiniert für uneingeschränkten Zugriff.

group(exampleGroup), user(exampleUser)

additionalHeaders

Hinzufügen zusätzlicher Header zum Rest-Aufruf

"&method=GET&additionalHeaders=%5B" + "NAME_OF_VARIABLE=" + variable + ";" + "NAME_OF_VARIABLE2=" + variable2 + "%5D"

Beispiel

Javascript (JavaScript)
var URL = "https://demo.com/interface/getExampleData"; 
var USER = "$enc$-605bc19777d129d182d0c467a54b129"; 
var PASSWORD = "$enc$-eda084ca7ea688d6454add9f9e4bd84"; 

jqxhr = jQ.ajax({ 
			url: '/loom-portal/rest/HttpRestManager?hostName=' + URL + '&method=GET&authMethod=basic&user=' + USER + '&pass=' + PASSWORD + &postParameter=json, 
			type: 'GET', 
			}).done(function(data){ 
				//todo!
			}).success(function(data) { 
			var response = 	data; 
			if (checkIfVariableIsNotNullAndNotUndefinedAndNotEmpty(response)) { 
				var parsedResponse = data; 
				if (typeof parsedResponse === "string") { 
					parsedResponse = JSON.parse(data); 
				} 
				thisPointer.entity.setValue('variable', JSON.stringify(data.response)); 
				thisPointer.entity.mergeLocal(true); 
			} 
		}).fail(function(data) { //Error Handling });

Speichern Sie den Benutzer und das Passwort nicht ohne Maskierung in den JS-Dateien!

Verwenden Sie das Encodermodul, um die Daten zu maskieren.

URL: <<serverAdress>>/encoder/ (Falls nicht vorhanden, wenden Sie sich bitte an den definierten Ansprechpartner)

Funktion checkIfVariableIsNotNullAndNotUndefinedAndNotEmpty \[polyfill\]
/** checkIfVariableIsNotNullAndNotUndefinedAndNotEmpty - returns true, if given variable is not empty and not null and not undefined - else it returns false**/ 

function checkIfVariableIsNotNullAndNotUndefinedAndNotEmpty(variable) { 
	if(variable !== null && variable !== undefined && variable !== "") { 
		return true; } 
	return false; 
}
Ausgabekonsole
JSON.parse(thisPointer.entity.getValue('variable')); { name: "Name", id: "id_val" }

Variante 2: REST CALL mit tim.properties

Beschreibung

Der Unterschied zu Variante 1 besteht darin, dass Sie den REST CALL in der Datei tim.properties konfigurieren müssen, die sich im Super-Ressourcenordner (Zugriff mit einem Super-Admin) oder Server-Dateisystem (Zugriff über Dateizugriff auf den Server) befindet. In diesem Fall müssen Sie die JS-Datei nicht berühren, wenn Sie z.B. das Passwort oder andere konfigurierbare Parameter ändern möchten. Solange der REST CALL bereits in der JS-Datei implementiert ist. Der Vorteil dieser Variante ist, dass Sie keine Passwörter oder Benutzernamen in der JavaScript-Datei hinterlegen müssen.

tim.properties

third-party-endpoint-getRESTCall={ 
	"hostName":"https://demo.com/interface/getExampleData", 
	"method":"GET"
	"authMethod":"basic", 
	"responseVariable":"demoVariable", 
	"user":"user", 
	"pass":"password",
	"postParameter": "json" 
}

Javascript (JavaScript)

Diese Methode ist nur im erweiterten Framework verfügbar (benutzerdefiniert, kein Standard):

DATA_SOURCE_CATALOGUE['getExampleData'] = { 
	src: Gadget.HOST + 'loom-portal/rest/HttpRestManager/getExampleData', 
	type: "json", 
	key: "key", 
	label: "label", 
	requestDataType: "application/json", 	
	requestType: "GET", 
	i18n: false, 
}; 

var callbackAfterFramework = function (thisPointer) { 

	var loadDone = $.Deferred(); 
	gadget.functions.loadAjaxDataForDropdownPromiseBased(thisPointer, $('#<<field_name>>')[0], $('#<<field_name>>').attr("data-timdatasource"), loadDone); 

	loadDone.done(function() { 
		var variable = myTKDropdownDataSet["getExampleData"]; 
		//todo! 
	}); 
}

jQ.ajax({
		url: "/loom-portal/rest/HttpRestManager/getRESTCall,
		type: "GET",
	}).done(function (data) {
		console.log('Date from interface is done loading:' + data);
	}).success(function (data) {
		// YOUR CUSTOM CODE HERE
	}).fail(function (data) {
		console.log('There has been an error loading the data from the interface:' + data);
	}).always(function () {
		console.log('The interface call is completed.);
	});

Beim Aufruf des HttpRestManager über JavaScript muss der Typ 'GET' sein.

URL (HTTPRestManager)

URL: '/loom-portal/rest/HttpRestManager/<<name_of_tim.propertie_endpoint>>

Parameter

Parametername

Standardwert

Beschreibung

Gültige Beispiele

hostName

Dieser Parameter enthält die URl des angeforderten Servers.

https://demo.com/interface/getExampleData

method

"POST"

Dieser Parameter bestimmt, welche Methode remote aufgerufen wird. "Post" bedeutet, dass der Server eine Eingabe im XML-Format erwartet, die er verarbeitet und zurückgibt. "Get" hingegen bedeutet, dass der Server Daten sendet, ohne dass eine Eingabe erforderlich ist.

Other possibilities are “delete”, “get”, “head”, “options”, “patch”, “post”, “put”.

postParameter

Dieser Parameter enthält die Eingabe für den Server im JSON-Format.

"json", "xml", "html", "text", "auto"

responseVariable

"SYS.HttpRestManager_response"

Dieser Parameter enthält die Prozessvariable, in der die Serverantwort gespeichert werden soll.

demoResponseVariable

user

Dieser Parameter ist nur erforderlich, wenn der Server eine Identifizierung erfordert und den Benutzernamen des Benutzers enthält.

demoUser

pass

Dieser Parameter wird nur benötigt, wenn der Server eine Identifikation benötigt und das Kennwort des Benutzers enthält.

demoPassword

authMethod

"basic"

Dieser Parameter wird nur benötigt, wenn der Server eine Identifizierung erfordert und die Verschlüsselung enthält, die angewendet werden soll. Eine mögliche Verschlüsselung ist base64, die angewendet wird, indem dieser Parameter auf "basic" gesetzt wird.

"oauth"

"basic"

oAuthTokenUrl

Nur erforderlich, wenn authMethod = "oauth"

URL, von der das oauth-Token abgerufen werden soll.

access

""

Definiert, welche Gruppen oder Benutzer die Schnittstelle aufrufen und Daten daraus abrufen können. Alle anderen Anrufe von nicht autorisierten Benutzern/Gruppen werden abgelehnt. Mehrere Benutzer/Gruppen können über ',' getrennt werden.
Standardmäßig ist die Schnittstelle für alle Benutzer aufrufbar.
Lassen Sie den Parameter leer/undefiniert für uneingeschränkten Zugriff.

group(exampleGroup), user(exampleUser)

Beispiel

Javascript (JavaScript)
jQ.ajax({
		url: "/loom-portal/rest/HttpRestManager/getRESTCall,
		type: "GET",
	}).done(function (data) {
		console.log('Date from interface is done loading:' + data);
	}).success(function (data) {
		// YOUR CUSTOM CODE HERE
	}).fail(function (data) {
		console.log('There has been an error loading the data from the interface:' + data);
	}).always(function () {
		console.log('The interface call is completed.);
	});

Speichern Sie den Benutzer und das Passwort nicht ohne Maskierung in den JS-Dateien!

Verwenden Sie das Encodermodul, um die Daten zu maskieren.

URL: <<serverAdress>>/encoder/ (Falls nicht vorhanden, wenden Sie sich bitte an den definierten Ansprechpartner)


Customizing: REST CALL mit benutzerdefinierten Variablen (über Template-Datei) (JS und tim.properties)

Beschreibung

Das folgende Beispiel zeigt, wie benutzerdefinierte Variablen in Verbindung mit einer REST CALL über JSON-Vorlagendatei verwendet werden. In diesem Fall müssen Sie die Parameter "templatePath" und "customVariables" in der REST CALL URL hinzufügen. Auf diese Weise können Sie Ihren Anruf anpassen.

Javascript (JavaScript)

Javascript (JavaScript)
var URL = "https://demo.com/interface/getExampleData"; 
var USER = "$enc$-605bc19777d129d182d0c467a54b129"; 
var PASSWORD = "$enc$-eda084ca7ea688d6454add9f9e4bd84";
var demoVariable = "Demo";

jQ.ajax({ 
	url: '/loom-portal/rest/HttpRestManager' +
		 '?hostName=' + URL + 
		 '&method=POST' +
		 '&authMethod=basic' + 
		 '&user=' + USER + 
         '&pass=' + PASSWORD + 
		 '&responseVariable=variableNameToSaveResponseTo' +
		 '&templatePath=httpBodyGetHeadDataByDemoVariables.json' +
		 '&customVariables=%5B' + 'custom_variable_name=' + demoVariable + ',custom_variable_name_two=' + demoVariableTwo + '%5D',
	type: 'GET', 
}).done(function(data){ 
	//todo!
}).success(function(data) { 
	//todo!
}).fail(function(data) { //Error Handling });

JSON-Datei - httpBodyGetHeadDataByDemoVariables.json (Parameter: templatePath)

JSON
{
    "search": [{
        "field": "demoField",
        "value": "${custom_variable_name}",
        "operator": "startsWith"
    }]
}

Der Parameter templatePath bezieht sich auf den Stammordner der Client-Ressourcen (erreichbar über den Administrations-Client).

  • No labels