Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Opret serverlogik i Konfigurer arbejdsområde i Design studio. Hver serverlogikpost repræsenterer særskilt serverlogik, som du kan aktivere fra et klientscript ved hjælp af understøttede HTTP-verber eller fra en flydende skabelon under gengivelse af serversiden.
Trin til oprettelse af serverlogik
- Log på Power Pages.
- Vælg websted + Rediger.
- Gå til Konfigurer arbejdsområde, og vælg derefter Serverlogik.
- Vælg +Ny serverlogik.
- Angiv et navn til serverlogikken. API'en bruger dette navn som ressource-id'et, når serverlogik-API'en konstrueres.
- Vælg +Tilføj roller for at tildele den relevante webrolle.
- Vælg de tre prikker (...) ud for navnet, og vælg Rediger kode.
- Vælg Åbn Visual Studio Code for at oprette den brugerdefinerede logik.
Kald fra klientscript til serverlogik
Notat
Hver anmodning til serverlogik skal indeholde et CSRF-token (Cross-Site Request Forgery). Metoden shell.safeAjax ombryder generelt CSRF-tokenet. Du kan få flere oplysninger om, hvordan du konstruerer anmodninger, under FUNKTIONEN CSRF-ombrydning i AJAX.
Eksempel: kald til HTTP GET
shell.safeAjax({
type: "GET",
url: "/_api/serverlogics/serverlogicname?id=1",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Eksempel: Kald af 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");
}
});
Eksempel: kald af 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");
}
});
Eksempel: Kald af 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");
}
});
Eksempel: Kald af HTTP DELETE
shell.safeAjax({
type: "DELETE",
url: "/_api/serverlogics/serverlogicname?id=1",
contentType: "application/json"
success: function (res) {
console.log("res");
}
});
Eksempel: Svar
{
"RequestId": "811b363e-36d2-4213-9f44-a73bf7550ce8",
"Success": true,
"Data": "Sample data",
"ExecutionTime": 9256.331,
"ServerLogicName": "serverlogicname",
"Error": null
}
Kald serverlogik fra Liquid
Brug koden serverlogic Liquid til at aktivere serverlogik, mens en side eller webskabelon gengives. Denne aktivering på serversiden kræver ikke en HTTP-anmodning på klientsiden eller CSRF-token (Cross-Site Request Forgery).
Tildel posten serverlogik til en webrolle, som den aktuelle webstedsbruger har adgang til.
Du kan se den komplette syntaks, inputparametre og returnerede attributter i objektetserverlogic Liquid.
Aktivér serverlogik uden input
Opret en funktion i posten serverlogik.
function getSummary() {
return JSON.stringify({
message: "Server logic invoked successfully",
count: 42
});
}
Aktivér funktionen fra en side eller webskabelon:
{% 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 %}
I dette eksempel:
-
customer-summaryer navnet på serverlogikposten. -
getSummaryer den JavaScript-funktion, der skal aktiveres. -
resulter variablen Liquid, der indeholder handlingsresultatet. -
result.dataindeholder den fortolkede JSON, der returneres afgetSummary.
Overfør input til serverlogik
Brug den valgfri input parameter til at overføre en streng til serverlogikhandlingen. Brug JSON, når du har brug for at overføre strukturerede data.
{% 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 %}
Læs inputtet i funktionen serverlogik via Server.Context.Input:
function getSummary() {
var input = JSON.parse(Server.Context.Input || "{}");
return JSON.stringify({
message: "Summary retrieved",
category: input.category,
maximumResults: input.maximumResults
});
}
Valider input, før du bruger det i Dataverse-handlinger eller overfører det til en ekstern tjeneste.
Notat
Serverlogikken aktiveres fra Flydende kørsler, mens siden gengives. Langvarige Dataverse-handlinger eller eksterne HTTP-anmodninger øger sidens svartid.
Begrænsninger
Følgende begrænsninger gælder ved oprettelse af serverlogik:
Browserspecifikke API'er understøttes ikke
Serverlogik kører i et servermiljø og understøtter ikke browserbaserede API'er eller biblioteker.
Eksempler omfatterfetch,XMLHttpRequestog andre DOM-relaterede funktioner.Begrænsede nøgleord og mønstre
For at opretholde et sikkert udførelsesmiljø validerer systemet scripts til serverlogik og afviser dem, der indeholder visse usikre eller begrænsede nøgleord. Disse nøgleord omfatter dem, der muliggør dynamisk udførelse af kode, processtyring eller prototypemanipulation.Følgende mønstre er ikke tilladt:
__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æste trin
Relaterede oplysninger
Oversigt over serverlogik
Sådan interagerer du med Dataverse-tabeller ved hjælp af serverlogik