Serverobjekter

Serverlogik leverer indbyggede objekter under servernavneområdet. Disse objekter forenkler udviklingen ved at lade dig logge meddelelser, ringe til eksterne tjenester, arbejde med Dataverse eller få adgang til oplysninger om anmodninger.

HttpClient

Brug HTTP-klienten til at integrere med eksterne tjenester ved at sende HTTP-anmodninger.

Bemærkning

I øjeblikket understøtter serverlogik kun application/json, text/htmlog application/x-www-form-urlencoded indholdstyper i anmodningens brødtekst.

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

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

Indstillinger for websted

Giver dig mulighed for at læse værdier for webstedsindstilling for det aktuelle websted.

Bemærkning

Gem ikke hemmeligheder, f.eks. API-nøgler eller legitimationsoplysninger, direkte i serverlogik. I stedet skal du gemme dem sikkert i Azure Key Vault, kilde dem via miljøvariabler og referere til dem ved hjælp af webstedsindstillinger.

Eksempel

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

Miljøvariabel

Læser værdien af en miljøvariabel.

Eksempel

Server.EnvironmentVariable.get("SITEPATH");

Hjemmeside

Indeholder oplysninger om den aktuelle webstedspost i Dataverse.

Eksempel

Server.Website.adx_primarydomain;

Bruger

Indeholder oplysninger om den bruger, der er logget på. Returnerer null, hvis det er anonymt.

Eksempel

Server.User.fullname;

Dataverse

Brug objektet Server.Connector.Dataverse til at udføre CRUD-handlinger på Dataverse-tabeller og aktivere brugerdefinerede API'er.

Bemærkning

  • Når du refererer til Dataverse-tabeller i din kode, skal du bruge EntitySetName. Hvis du f.eks. vil have adgang til account tabellen, skal du bruge EntitySetName accounts.

Opret post

Opret 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 post

Henter en enkelt 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)

Eksempel

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

RetrieveMultipleRecords

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

Eksempel

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

Opdater Optag

Opdaterer en eksisterende post efter 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\" }");

Slet post

Sletter en post efter 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) 

Aktivér en bundet funktion:

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

Aktivér en bundet handling:

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

Aktivér 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"
    }
}

Logger

Brug logføringen til at skrive diagnosticeringsmeddelelser, som du kan få vist i udvidelsen DevTools.

Eksempel:

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

Kontekst

Objektet Server.Context indeholder oplysninger om den aktuelle aktivering af serverlogik. De tilgængelige egenskaber afhænger af, om serverlogikken blev aktiveret via en HTTP-anmodning eller fra en Liquid-skabelon.

Egenskaber

Name Tilgængelig for Beskrivelse
ActivityId HTTP og flydende Entydigt id for aktivering af serverlogik. Brug denne værdi til at korrelere logge og foretage fejlfinding af en handling.
Body HTTP Rå http-anmodningsbrødtekst.
FunctionName HTTP og flydende Navnet på den JavaScript-funktion, der aktiveres. For en Liquid-aktivering svarer denne værdi til operation parameteren for serverlogic koden.
Headers HTTP HTTP-anmodningsheadere.
HttpMethod HTTP HTTP-anmodningsmetode, f.eks GET. , POST, PUT, PATCHeller DELETE.
Input Liquid Inputstrengen input , der leveres via parameteren for serverlogic liquid-koden. Når inputtet indeholder strukturerede data, skal du fortolke det som JSON, før du bruger det.
QueryParameters HTTP Forespørgselsstrengparametre fra HTTP-anmodningen.
ServerLogicName HTTP og flydende Navnet på den serverlogikpost, der aktiveres.
Url HTTP Fuldstændig URL-adresse til HTTP-anmodningen.

Få adgang til HTTP-anmodningskontekst

I følgende eksempel læses forespørgselsparameteren id , når serverlogik aktiveres via en HTTP-anmodning:

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

Du kan også få adgang til anmodningsmetadata:

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

Kontekst for adgang til flydende aktivering

Når serverlogik aktiveres fra Liquid, skal du bruge Server.Context.Input til at læse den værdi, der leveres via kodens input parameter.

Følgende Liquid overfører f.eks. JSON-input:

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

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

Handlingen serverlogik kan fortolke input- og adgangsoplysningerne om aktiveringen af Liquid:

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æste trin

Sådan interagerer du med Dataverse-tabeller ved hjælp af serverlogik

Oversigt over serverlogik
Forfatterserverlogik