Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Serverlogica biedt ingebouwde objecten onder de servernaamruimte. Deze objecten vereenvoudigen de ontwikkeling door u berichten te laten vastleggen, externe services aan te roepen, te werken met Dataverse of details van toegangsaanvragen.
HttpClient
Gebruik de HTTP-client om te integreren met externe services door HTTP-aanvragen te verzenden.
Note
Serverlogica ondersteunt momenteel alleen application/json, text/htmlen application/x-www-form-urlencoded inhoudstypen in de aanvraagbody.
Voorbeelden
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);
Voorbeeld: respons
{
"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
Hiermee kunt u site-instellingswaarden voor de huidige website lezen.
Note
Sla geen geheimen, zoals API-sleutels of referenties, rechtstreeks op in serverlogica. Sla ze in plaats daarvan veilig op in Azure Key Vault, bron ze via omgevingsvariabelen en verwijs ernaar met behulp van site-instellingen.
Example
Server.SiteSetting.Get("Search/Enabled");
EnvironmentVariable
Leest de waarde van een omgevingsvariabele.
Example
Server.EnvironmentVariable.get("SITEPATH");
Website
Hier vindt u informatie over de huidige websiterecord in Dataverse.
Example
Server.Website.adx_primarydomain;
User
Hier vindt u details van de aangemelde gebruiker. Retourneert null indien anoniem.
Example
Server.User.fullname;
Dataverse
Gebruik het Server.Connector.Dataverse object om CRUD-bewerkingen uit te voeren op Dataverse-tabellen en aangepaste API's aan te roepen.
Note
- Wanneer u in uw code naar Dataverse-tabellen verwijst, gebruikt u de EntitySetName. Als u bijvoorbeeld toegang wilt krijgen tot de
accounttabel, gebruikt u de EntitySetNameaccounts.
CreateRecord
Nieuwe record maken.
Server.Connector.Dataverse.CreateRecord(string entitySetName, string payload)
Example
Server.Connector.Dataverse.CreateRecord("accounts", "{\"name\": \"Contoso Ltd.\", \"telephone1\": \"555-555-0100\", \"websiteurl\": \"https://contoso.com\"}");
Record ophalen
Hiermee haalt u één record op id op.
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)
Example
Server.Connector.Dataverse.RetrieveRecord("accounts", "00000000-0000-0000-0000-000000000001", "$select=name,telephone1");
RetrieveMultipleRecords
Haalt een verzameling records op.
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName)
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName, string options)
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName, string options, bool skipCache)
Example
Server.Connector.Dataverse.RetrieveMultipleRecords("accounts", "$select=name,emailaddress1&$top=3");
Verslag bijwerken
Hiermee wordt een bestaande record bijgewerkt op id.
Server.Connector.Dataverse.UpdateRecord(string entitySetName, string id, string payload)
Example
Server.Connector.Dataverse.UpdateRecord("accounts", "00000000-0000-0000-0000-000000000001", "{ \"telephone1\": \"555-555-0100\" }");
Verwijderen Record
Hiermee verwijdert u een record op id.
Server.Connector.Dataverse.DeleteRecord(string entitySetName, string id)
Example
Server.Connector.Dataverse.DeleteRecord("accounts", "00000000-0000-0000-0000-000000000001");
InvokeCustomApi
Server.Connector.Dataverse.InvokeCustomApi(string httpMethod, string url, string payload = null)
Een afhankelijke functie aanroepen:
Server.Connector.Dataverse.InvokeCustomApi("get", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundFunction");
Een afhankelijke actie aanroepen:
Server.Connector.Dataverse.InvokeCustomApi("post", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundAction", "{ \"parameter1\": \"value1\" }");
Een niet-afhankelijke actie aanroepen:
Server.Connector.Dataverse.InvokeCustomApi("post", "new_Action", "{ \"parameter1\": \"value1\" }");
Voorbeeld: respons
{
"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
Gebruik de logger om diagnostische berichten te schrijven die u kunt bekijken in de DevTools-extensie.
Voorbeeld:
Server.Logger.Log("Information message");
Server.Logger.Warn("Warning message");
Server.Logger.Error("Error message");
Context
Het Server.Context object bevat informatie over de huidige serverlogica aanroep. De beschikbare eigenschappen zijn afhankelijk van of de serverlogica is aangeroepen via een HTTP-aanvraag of vanuit een Liquid-sjabloon.
Eigenschappen
| Naam | Beschikbaar voor | Beschrijving |
|---|---|---|
ActivityId |
HTTP en liquid | Unieke id voor de aanroep van de serverlogica. Gebruik deze waarde om logboeken te correleren en problemen met een bewerking op te lossen. |
Body |
HTTP | Hoofdtekst van onbewerkte HTTP-aanvraag. |
FunctionName |
HTTP en liquid | De naam van de JavaScript-functie die wordt aangeroepen. Voor een Liquid-aanroep komt deze waarde overeen met de operation parameter van de serverlogic tag. |
Headers |
HTTP | HTTP-aanvraagheaders. |
HttpMethod |
HTTP | HTTP-aanvraagmethode, zoals GET, POST, PUT, , PATCHof DELETE. |
Input |
Vloeistof | Invoertekenreeks die is opgegeven via de input parameter van de serverlogic Liquid-tag. Wanneer de invoer gestructureerde gegevens bevat, parseert u deze als JSON voordat u deze gebruikt. |
QueryParameters |
HTTP | Queryreeksparameters uit de HTTP-aanvraag. |
ServerLogicName |
HTTP en liquid | De naam van de serverlogicarecord die wordt aangeroepen. |
Url |
HTTP | Volledige URL van de HTTP-aanvraag. |
Http-aanvraagcontext openen
In het volgende voorbeeld wordt de id queryparameter gelezen wanneer serverlogica wordt aangeroepen via een HTTP-aanvraag:
var id = Server.Context.QueryParameters["id"];
U kunt ook toegang krijgen tot metagegevens van aanvragen:
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-aanroepcontext
Wanneer serverlogica wordt aangeroepen vanuit Liquid, gebruikt Server.Context.Input u deze om de waarde te lezen die is opgegeven via de parameter van input de tag.
De volgende Liquid geeft bijvoorbeeld JSON-invoer door:
{% assign inputData = '{"category":"active","maximumResults":5}' %}
{% serverlogic output: result, name: 'customer-summary', operation: 'getSummary', input: inputData %}
De serverlogicabewerking kan de invoer en toegang tot informatie over de liquide aanroep parseren:
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
});
}
Volgende stap
Interactie met Dataverse-tabellen met behulp van serverlogica