Palvelinobjektit

Palvelinlogiikka tarjoaa palvelimen nimitilan alaisia sisäisiä objekteja. Nämä objektit yksinkertaistavat kehitystä, koska voit kirjata lokeja, kutsua ulkoisia palveluita, käsitellä Dataversea tai käyttää pyyntötietoja.

HttpClient

HTTP-asiakasohjelman avulla voit integroida ulkoisiin palveluihin lähettämällä HTTP-pyyntöjä.

Muistio

Tällä hetkellä palvelinlogiikka tukee vain application/json-, text/html- ja application/x-www-form-urlencoded -sisältötyyppejä pyynnön leipätekstissä.

Esimerkit

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

Esimerkki: Vastaus

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

Sivuston asetukset

Tämän avulla voit lukea sivuston asetusarvoja nykyiselle verkkosivustolle.

Muistio

Älä tallenna salaisia salaisuustietoja, kuten ohjelmointirajapinnan avaimia tai tunnistetietoja, suoraan palvelinlogiikkaan. Tallenna ne turvallisesti Azure Key Vault, hanki ne ympäristömuuttujien kautta ja viittaa niihin sivuston asetusten avulla.

Esimerkki

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

Ympäristömuuttuja

Lukee ympäristömuuttujan arvon.

Esimerkki

Server.EnvironmentVariable.get("SITEPATH");

Verkkosivusto

Antaa tiedot nykyisestä sivustotietueesta Dataversessa.

Esimerkki

Server.Website.adx_primarydomain;

Käyttäjä

Antaa kirjautuneen käyttäjän tiedot. Palauttaa tyhjäarvon, jos se on anonyymi.

Esimerkki

Server.User.fullname;

Dataverse

Objektin Server.Connector.Dataverse avulla voit suorittaa CRUD-toimintoja Dataverse-taulukoille ja käynnistää mukautettuja ohjelmointirajapintoja.

Muistio

  • Kun viittaat koodissasi Dataverse-taulukoihin, käytä EntitySetName-nimeä. Jos haluat esimerkiksi käyttää taulukkoa account , käytä EntitySetName-nimeä accounts.

Luo tietue

Luo uusi tietue.

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

Esimerkki

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

Hae tietue

Hakee yksittäisen tietueen tunnuksen mukaan.

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)

Esimerkki

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

RetrieveMultipleRecords

Hakee tietuekokoelman.

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

Esimerkki

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

Päivitä ennätys

Päivittää olemassa olevan tietueen tunnuksen mukaan.

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

Esimerkki

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

Poista tietue

Poistaa tietueen tunnuksen mukaan.

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

Esimerkki

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

KutsuCustomApi

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

Kutsu sidottua funktiota:

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

Kutsu sidottu toiminto:

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

Kutsu ei-sidottu toiminto:

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

Esimerkki: Vastaus

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

Metsuri

Lokitoiminnon avulla voit kirjoittaa diagnostiikkaviestejä, joita voit tarkastella DevTools-laajennuksessa.

Esimerkki:

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

Konteksti

- Server.Context objekti antaa tietoja palvelinlogiikan nykyisestä kutsusta. Käytettävissä olevat ominaisuudet riippuvat siitä, käynnistettiinkö palvelinlogiikka HTTP-pyynnöllä vai Liquid-mallilla.

Ominaisuudet

Nimi Käytettävissä Description
ActivityId HTTP ja Liquid Palvelimen logiikkakutsun yksilöllinen tunnus. Käytä tätä arvoa lokien korreloimiseen ja toiminnon vianmääritykseen.
Body HTTP HTTP-pyynnön raaka leipäteksti.
FunctionName HTTP ja Liquid Käynnistettyn JavaScript-funktion nimi. Liquid-kutsussa tämä arvo vastaa operation tunnisteen parametria serverlogic .
Headers HTTP HTTP-pyyntöotsikot.
HttpMethod HTTP HTTP-pyyntömenetelmä, kuten GET, POST, PUT, PATCHtai DELETE.
Input Liquid Liquid-tunnisteen input parametrin serverlogic kautta annettu syötemerkkijono. Kun syöte sisältää jäsennettyjä tietoja, jäsennä se JSON-muotoon ennen sen käyttämistä.
QueryParameters HTTP HTTP-pyynnön kyselymerkkijonoparametrit.
ServerLogicName HTTP ja Liquid Käynnistettyn palvelimen logiikkatietueen nimi.
Url HTTP HTTP-pyynnön täydellinen URL-osoite.

HTTP-pyyntökontekstin käyttäminen

Seuraavassa esimerkissä lukee kyselyparametri, id kun palvelinlogiikka käynnistetään HTTP-pyynnöllä:

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

Voit myös käyttää pyynnön metatietoja:

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

Liquid-kutsukontekstin käyttö

Kun palvelinlogiikka käynnistetään Liquid-funktiosta, lue -parametrin kautta annettu arvo -parametrin input avullaServer.Context.Input.

Esimerkiksi seuraava Liquid välittää JSON-syötteen:

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

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

Palvelimen logiikkatoiminto voi jäsentää Liquid-kutsun syöte- ja käyttöoikeustiedot:

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

Seuraava vaihe

Dataverse-taulukoiden käsitteleminen palvelinlogiikan avulla

Palvelinlogiikan yleiskatsaus
Laatijapalvelimen logiikka