Serverio objektai

Serverio logika teikia įtaisytuosius objektus po serverio vardų sritimi. Šie objektai supaprastina kūrimą leisdami jums registruoti pranešimus, skambinti išorinėms tarnyboms, dirbti su "Dataverse" arba prieigos užklausos informacija.

Httpclient

Naudokite HTTP klientą, kad integruotumėte su išorinėmis tarnybomis siųsdami HTTP užklausas.

Pastaba.

Šiuo metu serverio logika palaiko tik application/json, text/htmlir application/x-www-form-urlencoded turinio tipus užklausos tekste.

Pavyzdžiai

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 PATAISA

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 NAIKINIMAS

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

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

Pavyzdys: atsakas

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

Svetainės nustatymas

Leidžia skaityti dabartinės svetainės parametrų reikšmes.

Pastaba.

Nesaugokite paslapčių, pvz., API raktų ar kredencialų, tiesiogiai serverio logikoje. Vietoj to, saugokite juos saugiai Azure Key Vault, šaltinio juos naudodami aplinkos kintamuosius ir nurodykite juos naudodami svetainės parametrus.

Pavyzdys

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

EnvironmentVariable

Skaito aplinkos kintamojo reikšmę.

Pavyzdys

Server.EnvironmentVariable.get("SITEPATH");

Svetainę

Pateikia informaciją apie dabartinį svetainės įrašą programoje "Dataverse".

Pavyzdys

Server.Website.adx_primarydomain;

User

Pateikiama prisijungusio vartotojo išsami informacija. Grąžina nulį, jei yra anoniminis.

Pavyzdys

Server.User.fullname;

Dataverse

Naudokite objektą Server.Connector.Dataverse CRUD operacijoms su "Dataverse" lentelėmis atlikti ir pasirinktinėms API iškviesti.

Pastaba.

  • Kai savo kode nurodote "Dataverse" lenteles, naudokite EntitySetName. Pavyzdžiui, norėdami pasiekti account lentelę, naudokite EntitySetName accounts.

Sukurti įrašą

Kurti naują įrašą.

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

Pavyzdys

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

RetrieveRecord

Nuskaito vieną įrašą pagal 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)

Pavyzdys

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

RetrieveMultipleRecords

Nuskaito įrašų rinkinį.

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

Pavyzdys

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

UpdateRecord

Atnaujina esamą įrašą pagal ID.

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

Pavyzdys

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

DeleteRecord

Panaikina įrašą pagal ID.

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

Pavyzdys

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

InvokeCustomApi

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

Iškviesti susietą funkciją:

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

Iškviesti susietą veiksmą:

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

Iškviesti nesusietą veiksmą:

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

Pavyzdys: atsakas

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

Naudokite žurnalą norėdami rašyti diagnostikos pranešimus, kuriuos galite peržiūrėti "DevTools" plėtinyje.

Pavyzdys:

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

Kontekstas

Objektas Server.Context pateikia informaciją apie dabartinę serverio logiką. Galimos ypatybės priklauso nuo to, ar serverio logika buvo iškviesta naudojant HTTP užklausą, ar iš "Liquid" šablono.

Ypatybės

Pavadinimas / vardas ir pavardė Galima naudoti Aprašą
ActivityId HTTP ir "Liquid" Unikalusis serverio logikos iškvietimo identifikatorius. Naudokite šią reikšmę, jei norite susieti žurnalus ir šalinti operacijos triktis.
Body HTTP Neapdorotas HTTP užklausos tekstas.
FunctionName HTTP ir "Liquid" Iškviečiamos "JavaScript" funkcijos pavadinimas. Naudojant "Liquid" iškvietimą operation , ši reikšmė atitinka žymės parametrą serverlogic .
Headers HTTP HTTP užklausų antraštės.
HttpMethod HTTP HTTP užklausos metodas, pvz GET., , POST, PUT, , PATCHarba DELETE.
Input „Liquid“ Įvesties eilutė, input pateikiama per žymės Liquid parametrą serverlogic . Kai įvestyje yra struktūrinių duomenų, prieš juos naudodami išanalizuoti kaip JSON.
QueryParameters HTTP Užklausos eilutės parametrai iš HTTP užklausos.
ServerLogicName HTTP ir "Liquid" Iškviečiamo serverio logikos įrašo pavadinimas.
Url HTTP Visas HTTP užklausos URL.

Prieigos HTTP užklausos kontekstas

Toliau pateiktame pavyzdyje perskaitytas id užklausos parametras, kai serverio logika iškviečiama per HTTP užklausą:

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

Taip pat galite pasiekti užklausos metaduomenis:

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" iškvietimo kontekstas

Kai serverio logika iškviečiama iš "Liquid"input, naudokite Server.Context.Input norėdami skaityti reikšmę, pateiktą per žymės parametrą.

Pvz., šis skystis perduoda JSON įvestį:

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

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

Serverio logikos operacija gali išanalizuoti įvesties ir prieigos informaciją apie "Liquid" iškvietimą:

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

Tolesnis veiksmas

Kaip sąveikauti su "Dataverse" lentelėmis naudojant serverio logiką

Serverio logikos apžvalga
Autoriaus serverio logika