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 liittimen avulla voit lukea sivuston asetusarvot 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

Tämän liittimen avulla voit lukea ympäristömuuttujan arvon.

Esimerkki

Server.EnvironmentVariable.get("SITEPATH");

Verkkosivusto

Tämän liittimen avulla voit hakea dataverse-sivuston nykyisen tietueen tiedot.

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

CloudFlow

Objektin Server.Connector.CloudFlow avulla voit käynnistää Power Automate pilvipalvelun työnkulun palvelinlogiikasta. Työnkulku on jo lisättävä sivustoosi. Se on palvelinpuolen vastine työnkulun kutsulle käyttämällä verkkosivulta peräisin olevaa pilvityönkulun ohjelmointirajapintaa. Se käyttää samaa pohjana olevaa putkea kuin /_api/cloudflow/v1.0/trigger/<guid> päätepiste. Määritys, valtuutus ja hyötykuorma toimivat samoin. Vain kutsuvan kontekstin välillä on eroja.

Muistio

Käynnistin

Käynnistää pilvipalvelun työnkulun ja palauttaa vastauksen kirjekuorin.

Server.Connector.CloudFlow.TriggerAsync(string flowId, string payload = null)
  • flowId: Työnkulun tunnus. Sama GUID-tunnus, joka näkyy pilvipalvelutyönkulun ohjelmointirajapinnan URI-uri-tunnuksena (/_api/cloudflow/v1.0/trigger/<guid>). Löydät tämän arvon sivuston Pilvityönkulut-sivulta kohdasta Määritä>integroinnit.
  • payload: Valinnainen JSON-merkkijono, joka sisältää käynnistinsyöteparametreja, jotka on määritetty työnkulun käynnistimessä määritetyillä parametrinimillä. Välitä null tai tyhjä merkkijono, jos työnkulku ei saa syötteitä. - siteId, siteUrl- ja userId -kohteet lisätään hyötykuormaan automaattisesti.

Esimerkki

async function post() {
    let flowId = "00000000-0000-0000-0000-000000000001";
    let payload = JSON.stringify({ Location: "Seattle" });

    let response = await Server.Connector.CloudFlow.TriggerAsync(flowId, payload);
    let result = JSON.parse(response);

    if (!result.IsSuccessStatusCode) {
        Server.Logger.Error("Cloud flow trigger failed: " + result.ReasonPhrase);
        return JSON.stringify({ success: false, error: result.ReasonPhrase });
    }

    return JSON.stringify({ success: true, flowResponse: result.Body });
}

Esimerkki: Vastaus

{
    "StatusCode": 200,
    "Body": "JsonString",
    "IsSuccessStatusCode": true,
    "ReasonPhrase": "OK",
    "ServerError": false,
    "ServerErrorMessage": null
}

Jos pilvipalvelun työnkulku ei sisällä vastaustoimintoa, se palauttaa 202 Accepted arvon ja on tyhjä Body. Palvelinlogiikassa tämä vastaus ilmoitetaan muodossa IsSuccessStatusCode: true.

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 Server.Context.Input avullainput.

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