Serverobjecten

Serverlogica biedt ingebouwde objecten onder de servernaamruimte. Deze objecten vereenvoudigen de ontwikkeling door u berichten te laten vastleggen, externe services aan te roepen, te werken met Dataverse of details van toegangsaanvragen.

HttpClient

Gebruik de HTTP-client om te integreren met externe services door HTTP-aanvragen te verzenden.

Note

Serverlogica ondersteunt momenteel alleen application/json, text/htmlen application/x-www-form-urlencoded inhoudstypen in de aanvraagbody.

Voorbeelden

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);

Voorbeeld: respons

{
    "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

Hiermee kunt u site-instellingswaarden voor de huidige website lezen.

Note

Sla geen geheimen, zoals API-sleutels of referenties, rechtstreeks op in serverlogica. Sla ze in plaats daarvan veilig op in Azure Key Vault, bron ze via omgevingsvariabelen en verwijs ernaar met behulp van site-instellingen.

Example

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

EnvironmentVariable

Leest de waarde van een omgevingsvariabele.

Example

Server.EnvironmentVariable.get("SITEPATH");

Website

Hier vindt u informatie over de huidige websiterecord in Dataverse.

Example

Server.Website.adx_primarydomain;

User

Hier vindt u details van de aangemelde gebruiker. Retourneert null indien anoniem.

Example

Server.User.fullname;

Dataverse

Gebruik het Server.Connector.Dataverse object om CRUD-bewerkingen uit te voeren op Dataverse-tabellen en aangepaste API's aan te roepen.

Note

  • Wanneer u in uw code naar Dataverse-tabellen verwijst, gebruikt u de EntitySetName. Als u bijvoorbeeld toegang wilt krijgen tot de account tabel, gebruikt u de EntitySetName accounts.

CreateRecord

Nieuwe record maken.

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\"}");

Record ophalen

Hiermee haalt u één record op id op.

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

Haalt een verzameling records op.

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");

Verslag bijwerken

Hiermee wordt een bestaande record bijgewerkt op 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\" }");

Verwijderen Record

Hiermee verwijdert u een record op 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) 

Een afhankelijke functie aanroepen:

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

Een afhankelijke actie aanroepen:

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

Een niet-afhankelijke actie aanroepen:

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

Voorbeeld: respons

{
    "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

Gebruik de logger om diagnostische berichten te schrijven die u kunt bekijken in de DevTools-extensie.

Voorbeeld:

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

Context

Het Server.Context object bevat informatie over de huidige serverlogica aanroep. De beschikbare eigenschappen zijn afhankelijk van of de serverlogica is aangeroepen via een HTTP-aanvraag of vanuit een Liquid-sjabloon.

Eigenschappen

Naam Beschikbaar voor Beschrijving
ActivityId HTTP en liquid Unieke id voor de aanroep van de serverlogica. Gebruik deze waarde om logboeken te correleren en problemen met een bewerking op te lossen.
Body HTTP Hoofdtekst van onbewerkte HTTP-aanvraag.
FunctionName HTTP en liquid De naam van de JavaScript-functie die wordt aangeroepen. Voor een Liquid-aanroep komt deze waarde overeen met de operation parameter van de serverlogic tag.
Headers HTTP HTTP-aanvraagheaders.
HttpMethod HTTP HTTP-aanvraagmethode, zoals GET, POST, PUT, , PATCHof DELETE.
Input Vloeistof Invoertekenreeks die is opgegeven via de input parameter van de serverlogic Liquid-tag. Wanneer de invoer gestructureerde gegevens bevat, parseert u deze als JSON voordat u deze gebruikt.
QueryParameters HTTP Queryreeksparameters uit de HTTP-aanvraag.
ServerLogicName HTTP en liquid De naam van de serverlogicarecord die wordt aangeroepen.
Url HTTP Volledige URL van de HTTP-aanvraag.

Http-aanvraagcontext openen

In het volgende voorbeeld wordt de id queryparameter gelezen wanneer serverlogica wordt aangeroepen via een HTTP-aanvraag:

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

U kunt ook toegang krijgen tot metagegevens van aanvragen:

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-aanroepcontext

Wanneer serverlogica wordt aangeroepen vanuit Liquid, gebruikt Server.Context.Input u deze om de waarde te lezen die is opgegeven via de parameter van input de tag.

De volgende Liquid geeft bijvoorbeeld JSON-invoer door:

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

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

De serverlogicabewerking kan de invoer en toegang tot informatie over de liquide aanroep parseren:

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
    });
}

Volgende stap

Interactie met Dataverse-tabellen met behulp van serverlogica

Overzicht van serverlogica
Serverlogica ontwerpen