Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La logique serveur fournit des objets intégrés sous l’espace de noms du serveur. Ces objets simplifient le développement en vous permettant de consigner des messages, d’appeler des services externes, d’utiliser Dataverse ou d’accéder aux détails de la demande.
HttpClient
Utilisez le client HTTP pour l’intégrer à des services externes en envoyant des requêtes HTTP.
Note
Actuellement, la logique serveur prend uniquement application/jsonen charge les types de text/htmlcontenu et application/x-www-form-urlencoded de contenu dans le corps de la requête.
Exemples
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);
CORRECTIF HTTP
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);
Exemple : réponse
{
"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
Vous permet de lire les valeurs des paramètres de site pour le site web actuel.
Note
Ne stockez pas de secrets, tels que des clés API ou des informations d’identification, directement dans la logique du serveur. Au lieu de cela, stockez-les en toute sécurité dans Azure Key Vault, sourcez-les via des variables d’environnement et référencez-les à l’aide des paramètres de site.
Example
Server.SiteSetting.Get("Search/Enabled");
EnvironmentVariable
Lit la valeur d’une variable d’environnement.
Example
Server.EnvironmentVariable.get("SITEPATH");
Website
Fournit des détails sur l’enregistrement de site web actuel dans Dataverse.
Example
Server.Website.adx_primarydomain;
Utilisateur
Fournit des détails sur l’utilisateur connecté. Retourne la valeur Null si elle est anonyme.
Example
Server.User.fullname;
Dataverse
Utilisez l’objet Server.Connector.Dataverse pour effectuer des opérations CRUD sur des tables Dataverse et appeler des API personnalisées.
Note
- Lorsque vous faites référence à des tables Dataverse dans votre code, utilisez EntitySetName. Par exemple, pour accéder à la
accounttable, utilisez EntitySetNameaccounts.
CreateRecord
Créez un enregistrement.
Server.Connector.Dataverse.CreateRecord(string entitySetName, string payload)
Exemple
Server.Connector.Dataverse.CreateRecord("accounts", "{\"name\": \"Contoso Ltd.\", \"telephone1\": \"555-555-0100\", \"websiteurl\": \"https://contoso.com\"}");
RécupérerEnregistrement
Récupère un enregistrement unique par 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)
Example
Server.Connector.Dataverse.RetrieveRecord("accounts", "00000000-0000-0000-0000-000000000001", "$select=name,telephone1");
RetrieveMultipleRecords
Récupère un ensemble d’enregistrements.
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");
Mise à jourEnregistrement
Met à jour un enregistrement existant par 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\" }");
DeleteRecord
Supprime un enregistrement par 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)
Appeler une fonction liée :
Server.Connector.Dataverse.InvokeCustomApi("get", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundFunction");
Appelez une action liée :
Server.Connector.Dataverse.InvokeCustomApi("post", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundAction", "{ \"parameter1\": \"value1\" }");
Appelez une action indépendante :
Server.Connector.Dataverse.InvokeCustomApi("post", "new_Action", "{ \"parameter1\": \"value1\" }");
Exemple : réponse
{
"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
Utilisez l’enregistreur d’événements pour écrire des messages de diagnostic que vous pouvez afficher dans l’extension DevTools.
Exemple :
Server.Logger.Log("Information message");
Server.Logger.Warn("Warning message");
Server.Logger.Error("Error message");
Contexte
L’objet Server.Context fournit des informations sur l’appel de logique de serveur actuel. Les propriétés disponibles dépendent de l’appel de la logique du serveur via une requête HTTP ou à partir d’un modèle Liquid.
Propriétés
| Nom | Disponible pour | Description |
|---|---|---|
ActivityId |
HTTP et Liquid | Identificateur unique pour l’appel de logique serveur. Utilisez cette valeur pour mettre en corrélation les journaux et résoudre les problèmes d’une opération. |
Body |
HTTP | Corps de la requête HTTP brute. |
FunctionName |
HTTP et Liquid | Nom de la fonction JavaScript appelée. Pour un appel Liquid, cette valeur correspond au operation paramètre de la serverlogic balise. |
Headers |
HTTP | En-têtes de requête HTTP. |
HttpMethod |
HTTP | Méthode de requête HTTP, telle que GET, , POSTPUT, PATCH, ou DELETE. |
Input |
Liquid | Chaîne d’entrée fournie via le input paramètre de la serverlogic balise Liquid. Lorsque l’entrée contient des données structurées, analysez-la en tant que JSON avant de l’utiliser. |
QueryParameters |
HTTP | Paramètres de chaîne de requête à partir de la requête HTTP. |
ServerLogicName |
HTTP et Liquid | Nom de l’enregistrement logique du serveur appelé. |
Url |
HTTP | URL complète de la requête HTTP. |
Accéder au contexte de requête HTTP
L’exemple suivant lit le paramètre de requête lorsque la id logique du serveur est appelée par le biais d’une requête HTTP :
var id = Server.Context.QueryParameters["id"];
Vous pouvez également accéder aux métadonnées de demande :
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
});
}
Accéder au contexte d’appel Liquid
Lorsque la logique du serveur est appelée à partir de Liquid, utilisez Server.Context.Input cette option pour lire la valeur fournie via le paramètre de input la balise.
Par exemple, liquid passe l’entrée JSON suivante :
{% assign inputData = '{"category":"active","maximumResults":5}' %}
{% serverlogic output: result, name: 'customer-summary', operation: 'getSummary', input: inputData %}
L’opération logique du serveur peut analyser les informations d’entrée et d’accès à l’appel Liquid :
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
});
}
Étape suivante
Comment interagir avec des tables Dataverse à l’aide de la logique serveur
Informations associées
Vue d’ensemble de la logique serveur
Écrire une logique de serveur