Serverobjekter

Serverlogikk inneholder innebygde objekter under servernavneområdet. Disse objektene forenkler utviklingen ved å la deg logge meldinger, ringe eksterne tjenester, arbeide med dataverse eller få tilgang til forespørselsdetaljer.

HttpClient

Bruk HTTP-klienten til å integrere med eksterne tjenester ved å sende HTTP-forespørsler.

Notat

For øyeblikket støtter serverlogikk bare application/json, text/htmlog application/x-www-form-urlencoded innholdstyper i forespørselsteksten.

Eksempler

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

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

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

Eksempel: 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"
    }
}

Nettstedinnstilling

Lar deg lese verdier for områdeinnstilling for gjeldende nettsted.

Notat

Ikke lagre hemmeligheter, for eksempel API-nøkler eller legitimasjon, direkte i serverlogikk. I stedet lagrer du dem sikkert i Azure Key Vault, henter dem gjennom miljøvariabler og refererer til dem ved hjelp av nettstedsinnstillinger.

Eksempel

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

EnvironmentVariable

Leser verdien for en miljøvariabel.

Eksempel

Server.EnvironmentVariable.get("SITEPATH");

Nettsted

Gir detaljer om gjeldende nettstedsoppføring i Dataverse.

Eksempel

Server.Website.adx_primarydomain;

Bruker

Gir detaljer om den påloggede brukeren. Returnerer null hvis anonym.

Eksempel

Server.User.fullname;

Dataverse

Server.Connector.Dataverse Bruk objektet til å utføre CRUD-operasjoner på dataverse tabeller og aktivere egendefinerte API-er.

Notat

  • Når du refererer til Dataverse-tabeller i koden, bruker du EntitySetName. Hvis du for eksempel vil ha tilgang til account tabellen, bruker du EntitySetName accounts.

CreateRecord

Opprett ny post.

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

Eksempel

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

Hent oppføring

Henter én post etter 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)

Eksempel

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

RetrieveMultipleRecords

Henter en samling med 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) 

Eksempel

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

Oppdater opptak

Oppdaterer en eksisterende post etter ID.

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

Eksempel

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

Slett post

Sletter en post etter ID.

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

Eksempel

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

InvokeCustomApi

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

Aktiver en bundet funksjon:

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

Aktiver en bundet handling:

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

Aktiver en ubundet handling:

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

Eksempel: 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"
    }
}

Loggfører

Bruk loggeren til å skrive diagnosedata som du kan vise i utvidelsen DevTools.

Eksempel:

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

Kontekst

Objektet Server.Context inneholder informasjon om aktivering av gjeldende serverlogikk. De tilgjengelige egenskapene avhenger av om serverlogikken ble startet via en HTTP-forespørsel eller fra en flytende mal.

Egenskaper

Navn Tilgjengelig for Beskrivelse
ActivityId HTTP og Liquid Unik identifikator for aktivering av serverlogikk. Bruk denne verdien til å koordinere logger og feilsøke en operasjon.
Body HTTP Brødtekst for rå HTTP-forespørsel.
FunctionName HTTP og Liquid Navnet på JavaScript-funksjonen som aktiveres. For en flytende aktivering tilsvarer denne verdien parameteren operationserverlogic for koden.
Headers HTTP HTTP-forespørselshoder.
HttpMethod HTTP HTTP-forespørselsmetode, for eksempel GET, POST, PUT, PATCHeller DELETE.
Input Liquid Inndatastreng angitt gjennom parameteren input for serverlogic Liquid-koden. Når inndataene inneholder strukturerte data, analyserer du dem som JSON før du bruker dem.
QueryParameters HTTP Spørringsstrengparametere fra HTTP-forespørselen.
ServerLogicName HTTP og Liquid Navnet på serverlogikkposten som aktiveres.
Url HTTP Fullstendig URL-adresse for HTTP-forespørselen.

Access HTTP-forespørselskontekst

Følgende eksempel leser spørringsparameteren id når serverlogikk aktiveres gjennom en HTTP-forespørsel:

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

Du kan også få tilgang til metadata for forespørsel:

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

Når serverlogikk aktiveres fra Liquid, brukes Server.Context.Input til å lese verdien som er angitt gjennom kodens input parameter.

Følgende liquid passerer for eksempel JSON-inndata:

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

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

Serverlogikkoperasjonen kan analysere inndata og få tilgang til informasjon om flytende aktivering:

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

Neste trinn:

Slik samhandler du med dataverse tabeller ved hjelp av serverlogikk

Oversikt over serverlogikk
Redigeringsserverlogikk