Objets serveur

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 text/html types de application/x-www-form-urlencoded 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 les secrets (comme les clés API ou les 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

L’objet Server.Connector.Dataverse vous permet d’effectuer des opérations CRUD sur des tables Dataverse et d’appeler des API personnalisées.

Note

  • Lorsque vous faites référence à des tables Dataverse dans votre code, vous devez utiliser EntitySetName, par exemple, pour accéder à la account table, la syntaxe du code utilise EntitySetName de accounts.

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 non liée :

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 qui peuvent être affichés dans l’extension DevTools.

Exemple :

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

Contexte

Fournit des métadonnées sur la requête actuelle, notamment les paramètres de requête, les en-têtes et le corps.

Propriétés

Nom Description
Id d'activité ID de requête unique
Corps Corps de la requête brute
FunctionName Nom de la fonction appelée
En-têtes En-têtes de demande
Méthode HTTP Méthode HTTP
QueryParameters Paramètres de chaîne de requête
ServerLogicName Nom de la logique du serveur
URL URL de requête complète

Example

Lire le paramètre id de requête à partir de l’URL :

Server.Context.QueryParameters['id'];

Étape suivante

Comment interagir avec des tables Dataverse à l’aide de la logique serveur

Vue d’ensemble de la logique serveur
Écrire une logique de serveur