Serverobjekt

Serverlogik tillhandahåller inbyggda objekt under servernamnområdet. Dessa objekt förenklar utvecklingen genom att du kan logga meddelanden, anropa externa tjänster, arbeta med Dataverse eller få åtkomst till information om begäranden.

HttpClient (på engelska)

Använd HTTP-klienten för att integrera med externa tjänster genom att skicka HTTP-begäranden.

Anmärkning

För närvarande stöder serverlogik endast application/jsoninnehållstyperna , text/htmloch application/x-www-form-urlencoded i begärandetexten.

Examples

HTTP GET

let url = "https://contoso.com/objects";
let header = { client_id: "00001111-aaaa-2222-bbbb-3333cccc4444" };

let response = await Server.Connector.HttpClient.GetAsync(url, header);

HTTP POST

let url = "https://contoso.com/objects";
let body = JSON.stringify({ name: "Sample Account" });
let header = { client_id: "00001111-aaaa-2222-bbbb-3333cccc4444" };
let contentType = "application/json";

// Make the POST request
let response = await Server.Connector.HttpClient.PostAsync(url, body, header, contentType);

HTTP PUT

let url = "https://contoso.com/objects/6";
let body = JSON.stringify({ name: "Updated Sample Account" });
let header = { client_id: "00001111-aaaa-2222-bbbb-3333cccc4444" };
let contentType = "application/json";

// Make the PUT request
let response = await Server.Connector.HttpClient.PutAsync(url, body, header, contentType);

HTTP PATCH

let url = "https://contoso.com/objects/6";
let body = JSON.stringify({ name: "{\"capacity\": \"2 TB\"}" });
let header = { client_id: "00001111-aaaa-2222-bbbb-3333cccc4444" };
let contentType = "application/json";

// Make the PATCH request
let response = await Server.Connector.HttpClient.PatchAsync(url, body, header, contentType);

HTTP DELETE

let url = "https://contoso.com/objects/6";
let header = { contentType: "application/json" };

let response = await Server.Connector.HttpClient.DeleteAsync(url, header);

Exempel: svar

{
    "StatusCode": 200,
    "Body": "JsonString",
    "IsSuccessStatusCode": true,
    "ReasonPhrase": "OK",
    "ServerError": false,
    "ServerErrorMessage": null,
    "Headers": {
        "Transfer-Encoding": "chunked",
        "Connection": "keep-alive",
        "Server": "",
        "Content-Type": "application/json"
    }
}

SiteSetting

Gör att du kan läsa webbplatsinställningsvärden för den aktuella webbplatsen.

Anmärkning

Lagra inte hemligheter, till exempel API-nycklar eller autentiseringsuppgifter, direkt i serverlogik. Lagra dem i stället på ett säkert sätt i Azure Key Vault, hämta dem via miljövariabler och referera till dem med hjälp av webbplatsinställningar.

Example

Server.SiteSetting.Get("Search/Enabled");

EnvironmentVariable

Läser värdet för en miljövariabel.

Example

Server.EnvironmentVariable.get("SITEPATH");

Webbplats

Innehåller information om den aktuella webbplatsposten i Dataverse.

Example

Server.Website.adx_primarydomain;

User

Innehåller information om den inloggade användaren. Returnerar null om det är anonymt.

Example

Server.User.fullname;

Dataverse (på engelska)

Använd - Server.Connector.Dataverse objektet för att utföra CRUD-åtgärder i Dataverse-tabeller och anropa anpassade API:er.

Anmärkning

  • När du refererar till Dataverse-tabeller i koden använder du EntitySetName. Om du till exempel vill komma åt account tabellen använder du EntitySetName accounts.

Skapa post

Skapa ny post.

Server.Connector.Dataverse.CreateRecord(string entitySetName, string payload)   

Example

Server.Connector.Dataverse.CreateRecord("accounts", "{\"name\": \"Contoso Ltd.\", \"telephone1\": \"555-555-0100\", \"websiteurl\": \"https://contoso.com\"}");

RetrieveRecord (på engelska)

Hämtar en enskild post efter ID.

Server.Connector.Dataverse.RetrieveRecord(string entitySetName, string id)
Server.Connector.Dataverse.RetrieveRecord(string entitySetName, string id, string options)
Server.Connector.Dataverse.RetrieveRecord(string entitySetName, string id, string options, bool skipCache)

Example

Server.Connector.Dataverse.RetrieveRecord("accounts", "00000000-0000-0000-0000-000000000001", "$select=name,telephone1");

RetrieveMultipleRecords

Hämtar en samling poster.

Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName)
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName, string options)
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName, string options, bool skipCache) 

Example

Server.Connector.Dataverse.RetrieveMultipleRecords("accounts", "$select=name,emailaddress1&$top=3");

UpdateRecord (på engelska)

Uppdaterar en befintlig post efter ID.

Server.Connector.Dataverse.UpdateRecord(string entitySetName, string id, string payload)   

Example

Server.Connector.Dataverse.UpdateRecord("accounts", "00000000-0000-0000-0000-000000000001", "{ \"telephone1\": \"555-555-0100\" }");

Ta bortSpela in

Tar bort en post efter ID.

Server.Connector.Dataverse.DeleteRecord(string entitySetName, string id) 

Example

Server.Connector.Dataverse.DeleteRecord("accounts", "00000000-0000-0000-0000-000000000001");

InvokeCustomApi

Server.Connector.Dataverse.InvokeCustomApi(string httpMethod, string url, string payload = null) 

Anropa en bunden funktion:

Server.Connector.Dataverse.InvokeCustomApi("get", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundFunction");

Anropa en bunden åtgärd:

Server.Connector.Dataverse.InvokeCustomApi("post", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundAction", "{ \"parameter1\": \"value1\" }");

Anropa en obundna åtgärd:

Server.Connector.Dataverse.InvokeCustomApi("post", "new_Action", "{ \"parameter1\": \"value1\" }");

Exempel: svar

{
    "StatusCode": 204,
    "Body": "",
    "IsSuccessStatusCode": true,
    "ReasonPhrase": "No Content",
    "ServerError": false,
    "ServerErrorMessage": null,
    "Headers": {
        "x-ms-cds-service-request-id": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
}

Logger

Använd loggaren för att skriva diagnostikmeddelanden som du kan visa i DevTools-tillägget.

Exempel:

Server.Logger.Log("Information message");
Server.Logger.Warn("Warning message");
Server.Logger.Error("Error message");

Context

Objektet Server.Context innehåller information om den aktuella serverlogikanropet. Vilka egenskaper som är tillgängliga beror på om serverlogik anropades via en HTTP-begäran eller från en Liquid-mall.

Egenskaper

Namn Tillgänglig för Beskrivning
ActivityId HTTP och Liquid Unik identifierare för serverlogikanropet. Använd det här värdet för att korrelera loggar och felsöka en åtgärd.
Body HTTP Rå HTTP-begärandetext.
FunctionName HTTP och Liquid Namnet på den JavaScript-funktion som anropas. För ett Liquid-anrop motsvarar det här värdet parametern operation för taggen serverlogic .
Headers HTTP HTTP-begärandehuvuden.
HttpMethod HTTP HTTP-begärandemetod, till exempel GET, POST, PUT, PATCHeller DELETE.
Input Vätska Indatasträng som tillhandahålls via parametern input för liquid-taggen serverlogic . När indata innehåller strukturerade data parsar du dem som JSON innan du använder dem.
QueryParameters HTTP Frågesträngsparametrar från HTTP-begäran.
ServerLogicName HTTP och Liquid Namnet på den serverlogikpost som anropas.
Url HTTP Fullständig URL för HTTP-begäran.

Åtkomst till HTTP-begärandekontext

I följande exempel läss frågeparametern id när serverlogik anropas via en HTTP-begäran:

var id = Server.Context.QueryParameters["id"];

Du kan också komma åt metadata för begäran:

function getRequestInformation() {
    return JSON.stringify({
        activityId: Server.Context.ActivityId,
        functionName: Server.Context.FunctionName,
        httpMethod: Server.Context.HttpMethod,
        serverLogicName: Server.Context.ServerLogicName,
        url: Server.Context.Url
    });
}

Access Liquid-anropskontext

När serverlogik anropas från Liquid kan du använda Server.Context.Input för att läsa det värde som anges via taggens input parameter.

Följande Liquid skickar till exempel JSON-indata:

{% assign inputData = '{"category":"active","maximumResults":5}' %}

{% serverlogic output: result, name: 'customer-summary', operation: 'getSummary', input: inputData %}

Serverlogikåtgärden kan parsa indata och åtkomstinformation om Liquid-anropet:

function getSummary() {
    var input = JSON.parse(Server.Context.Input || "{}");

    return JSON.stringify({
        category: input.category,
        maximumResults: input.maximumResults,
        activityId: Server.Context.ActivityId,
        functionName: Server.Context.FunctionName,
        serverLogicName: Server.Context.ServerLogicName
    });
}

Nästa steg

Interagera med Dataverse-tabeller med hjälp av serverlogik

Översikt över serverlogik
Författare serverlogik