Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erstellen Sie Serverlogik im Arbeitsbereich "Einrichten" im Entwurfsstudio. Jeder Serverlogikeintrag stellt unterschiedliche serverseitige Logik dar, die Sie über ein Clientskript aufrufen können, indem Sie unterstützte HTTP-Verben oder eine Liquid-Vorlage während des serverseitigen Seitenrenderings verwenden.
Schritte zum Erstellen der Serverlogik
- Melden Sie sich bei Power Pages an.
- Wählen Sie "Website + Bearbeiten" aus.
- Wechseln Sie zum Arbeitsbereich einrichten , und wählen Sie dann die Serverlogik aus.
- Wählen Sie +Neue Serverlogik aus.
- Geben Sie einen Namen für die Serverlogik ein. Die API verwendet diesen Namen als Ressourcenbezeichner beim Erstellen der Serverlogik-API.
- Wählen Sie +Rollen hinzufügen , um die entsprechende Webrolle zuzuweisen.
- Wählen Sie die drei Punkte (...) neben dem Namen aus, und wählen Sie "Code bearbeiten" aus.
- Wählen Sie "Visual Studio Code öffnen " aus, um die benutzerdefinierte Logik zu erstellen.
Aufrufen der Serverlogik über das Clientskript
Hinweis
Jede Anfrage an die Serverlogik sollte ein Cross-Site Request Forgery (CSRF)-Token enthalten. Im Allgemeinen umschließt die shell.safeAjax-Methode das CSRF-Token. Weitere Informationen zum Erstellen von Anforderungen finden Sie unter CSRF wrapper AJAX function.
Beispiel: Aufrufen von HTTP GET
shell.safeAjax({
type: "GET",
url: "/_api/serverlogics/serverlogicname?id=1",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Beispiel: Aufrufen von HTTP POST
shell.safeAjax({
type: "POST",
url: "/_api/serverlogics/serverlogicname",
contentType: "application/json",
data: JSON.stringify({
"name": "Sample name"
}),
success: function (res) {
console.log("res");
}
});
Beispiel: Aufrufen von HTTP PUT
shell.safeAjax({
type: "PUT",
url: "/_api/serverlogics/serverlogicname",
contentType: "application/json",
data: JSON.stringify({
"name": "Sample name"
}),
success: function (res) {
console.log("res");
}
});
Beispiel: Aufrufen von HTTP PATCH
shell.safeAjax({
type: "PATCH",
url: "/_api/serverlogics/serverlogicname",
contentType: "application/json",
data: JSON.stringify({
"name": "Sample name"
}),
success: function (res) {
console.log("res");
}
});
Beispiel: Aufrufen von HTTP DELETE
shell.safeAjax({
type: "DELETE",
url: "/_api/serverlogics/serverlogicname?id=1",
contentType: "application/json"
success: function (res) {
console.log("res");
}
});
Beispiel: Antwort
{
"RequestId": "811b363e-36d2-4213-9f44-a73bf7550ce8",
"Success": true,
"Data": "Sample data",
"ExecutionTime": 9256.331,
"ServerLogicName": "serverlogicname",
"Error": null
}
Aufrufen der Serverlogik von Liquid
Verwenden Sie das serverlogic Liquid-Tag, um die Serverlogik aufzurufen, während eine Seite oder Webvorlage gerendert wird. Für diesen serverseitigen Aufruf ist kein clientseitiges HTTP-Anforderungs- oder CSRF-Token (Cross-Site Request Forgery) erforderlich.
Weisen Sie dem Serverlogikdatensatz eine Webrolle zu, auf die der aktuelle Websitebenutzer zugreifen kann.
Die vollständige Syntax, Eingabeparameter und zurückgegebenen Attribute finden Sie im serverlogic Liquid-Objekt.
Aufrufen der Serverlogik ohne Eingabe
Erstellen Sie eine Funktion im Serverlogikdatensatz.
function getSummary() {
return JSON.stringify({
message: "Server logic invoked successfully",
count: 42
});
}
Rufen Sie die Funktion von einer Seite oder Webvorlage auf:
{% serverlogic name: 'customer-summary', operation: 'getSummary', output: result %}
{% if result.success %}
<p>{{ result.data.message | escape }}</p>
<p>Count: {{ result.data.count }}</p>
{% else %}
<p>The customer summary couldn't be retrieved.</p>
{% endif %}
In diesem Beispiel:
-
customer-summaryist der Name des Serverlogikdatensatzes. -
getSummaryist die JavaScript-Funktion, die aufgerufen werden soll. -
resultist die Liquid-Variable, die das Vorgangsergebnis enthält. -
result.dataenthält den analysierten JSON-Code, der vongetSummary.
Übergeben von Eingaben an Die Serverlogik
Verwenden Sie den optionalen input Parameter, um eine Zeichenfolge an den Serverlogikvorgang zu übergeben. Verwenden Sie JSON, wenn Sie strukturierte Daten übergeben müssen.
{% assign inputData = '{"category":"active","maximumResults":5}' %}
{% serverlogic name: 'customer-summary', operation: 'getSummary', input: inputData, output: result %}
{% if result.success %}
<p>Category: {{ result.data.category | escape }}</p>
<p>Maximum results: {{ result.data.maximumResults }}</p>
{% endif %}
Lesen Sie die Eingabe in der Serverlogikfunktion durch Server.Context.Input:
function getSummary() {
var input = JSON.parse(Server.Context.Input || "{}");
return JSON.stringify({
message: "Summary retrieved",
category: input.category,
maximumResults: input.maximumResults
});
}
Überprüfen Sie die Eingabe, bevor Sie sie in Dataverse-Vorgängen verwenden oder an einen externen Dienst übergeben.
Hinweis
Serverlogik, die von Liquid aufgerufen wird, während die Seite gerendert wird. Lange ausgeführte Dataverse-Vorgänge oder externe HTTP-Anforderungen erhöhen die Seitenantwortzeit.
Limitations
Die folgenden Einschränkungen gelten beim Erstellen der Serverlogik:
Browserspezifische APIs werden nicht unterstützt.
Die Serverlogik wird in einer Serverumgebung ausgeführt und unterstützt keine browserbasierten APIs oder Bibliotheken.
Zu den Beispielen gehörenfetch,XMLHttpRequestund andere DOM-bezogene Features.Eingeschränkte Schlüsselwörter und Muster
Um eine sichere Ausführungsumgebung aufrechtzuerhalten, überprüft das System Serverlogikskripts und lehnt diejenigen ab, die bestimmte unsichere oder eingeschränkte Schlüsselwörter enthalten. Zu diesen Schlüsselwörtern gehören solche, die dynamische Codeausführung, Prozesssteuerung oder Prototypmanipulation ermöglichen.Die folgenden Muster sind nicht zulässig:
__dirname __filename import(, import from eval(, Function( setTimeout(, setInterval(, setImmediate( process.exit, process.kill, child_process fs., require( constructor.constructor, this.constructor, arguments.callee with(, delete Object.getPrototypeOf, Object.setPrototypeOf Proxy(, Reflect. Symbol.for __proto__, prototype debugger
Nächster Schritt
Verwandte Informationen
Übersicht über Die Serverlogik
Interaktion mit Dataverse-Tabellen mithilfe der Serverlogik