Serveriobjektid

Serveriloogika pakub sisseehitatud objekte serveri nimeruumi all. Need objektid lihtsustavad arengut, võimaldades logida sõnumeid, helistada välisteenuseid, töötada Dataverse'iga või juurdepääsutaotluse üksikasjadega.

HttpClient

HTTP-kliendi abil saate väliste teenustega integreerida HTTP-päringuid saates.

Märkus.

Praegu toetab serveriloogika ainult päringu sisuosas olevaid application/json, text/htmlja application/x-www-form-urlencoded sisutüüpe.

Näited

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

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

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

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

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

Näide: vastus

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

Võimaldab teil lugeda praeguse veebisaidi saidisätete väärtusi.

Märkus.

Ärge salvestage saladusi (nt API võtmeid või identimisteavet) otse serveri loogikasse. Selle asemel salvestage need turvaliselt Azure Key Vault, hankige need keskkonnamuutujate kaudu ja viidake neile saidisätete abil.

Näide

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

EnvironmentVariable

Loeb ette keskkonnamuutuja väärtuse.

Näide

Server.EnvironmentVariable.get("SITEPATH");

Veebisait

Sisaldab üksikasju praeguse veebisaidikirje kohta dataverse'is.

Näide

Server.Website.adx_primarydomain;

Kasutaja

Sisaldab sisselogimiskasutaja üksikasju. Tagastab tühiväärtuse, kui see on anonüümne.

Näide

Server.User.fullname;

Dataverse

Server.Connector.Dataverse Kasutage objekti CRUD-toimingute tegemiseks dataverse-tabelites ja kohandatud API-de kutsumiseks.

Märkus.

  • Koodis olevatele dataverse-tabelitele viitamisel kasutage EntitySetName'i. Näiteks tabelile juurdepääsemiseks account kasutage EntitySetName'i accounts.

Loo kirje

Saate luua uue kirje.

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

Näide

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

Kirje hankimine

Toob ühe kirje ID-ga.

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)

Näide

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

Too_kordsed_kirjed

Toob kirjete kogu.

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

Näide

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

Värskenda kirjet

Värskendab olemasoleva kirje ID-ga.

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

Näide

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

Kustuta kirje

Kustutab kirje ID-ga.

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

Näide

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

InvokeCustomApi

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

Köidetud funktsiooni kutsumine:

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

Seotud toimingu käivitamine:

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

Köitmata toimingu käivitamine:

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

Näide: vastus

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

Puuraidur

Logija abil saate kirjutada diagnostikateateid, mida saate vaadata DevToolsi laiendis.

Näide:

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

Kontekst

Server.Context Objekt annab teavet praeguse serveriloogika kutsumise kohta. Saadaolevad atribuudid sõltuvad sellest, kas serveriloogika käivitati HTTP-päringu või Liquidi malli kaudu.

Atribuudid

Nimi Saadaval: Kirjeldus
ActivityId HTTP ja vedelik Serveri loogika kutsumise ainuidentifikaator. Kasutage seda väärtust logide korreleerimiseks ja toimingu tõrkeotsinguks.
Body HTTP TOORES HTTP-päringu keha.
FunctionName HTTP ja vedelik Käivitatava JavaScripti funktsiooni nimi. Vedelal kutsumisel vastab operation see väärtus sildi parameetrile serverlogic .
Headers HTTP HTTP-päringu päised.
HttpMethod HTTP HTTP-päringumeetod (nt GET, , PUTPOST, , PATCHvõi DELETE.
Input Liquid Sisendstring, mis input esitatakse sildi Liquid parameetri serverlogic kaudu. Kui sisend sisaldab struktureeritud andmeid, sõeluge need enne kasutamist JSON-ina.
QueryParameters HTTP PÄRINGUstringi parameetrid HTTP-päringust.
ServerLogicName HTTP ja vedelik Kutsutava serveriloogikakirje nimi.
Url HTTP HTTP-taotluse täielik URL.

Accessi HTTP-päringu kontekst

Järgmises näites id loetakse päringuparameeter ette, kui HTTP-päringu kaudu käivitatakse serveriloogika:

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

Samuti pääsete juurde taotluse metaandmetele.

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 Liquidi kutsumise kontekst

Kui serveriloogika käivitatakse vedelikust, kasutage Server.Context.Input sildi input parameetri kaudu esitatud väärtuse lugemiseks.

Näiteks järgmine vedelik edastab JSON-sisendi:

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

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

Serveri loogikatoiming saab sõeluda vedelike kutsumise sisend- ja juurdepääsuteavet.

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

Järgmine etapp

Kuidas suhelda Dataverse'i tabelitega serveriloogika abil

Serveri loogika ülevaade
Autori serveri loogika