Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A lógica do servidor fornece objetos internos sob o namespace do servidor. Esses objetos simplificam o desenvolvimento, permitindo que você registre mensagens, chame serviços externos, trabalhe com o Dataverse ou acesse detalhes da solicitação.
HttpClient
Use o cliente HTTP para integrar com serviços externos enviando solicitações HTTP.
Observação
Atualmente, a lógica do servidor suporta apenas application/json, text/html, e application/x-www-form-urlencoded tipos de conteúdo no corpo do pedido.
Exemplos
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 COLOCAR
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);
EXCLUIR HTTP
let url = "https://contoso.com/objects/6";
let header = { contentType: "application/json" };
let response = await Server.Connector.HttpClient.DeleteAsync(url, header);
Exemplo: Resposta
{
"StatusCode": 200,
"Body": "JsonString",
"IsSuccessStatusCode": true,
"ReasonPhrase": "OK",
"ServerError": false,
"ServerErrorMessage": null,
"Headers": {
"Transfer-Encoding": "chunked",
"Connection": "keep-alive",
"Server": "",
"Content-Type": "application/json"
}
}
Configuração do Site
Permite que você leia os valores de configuração do site para o site atual.
Observação
Não armazene segredos, como chaves de API ou credenciais, diretamente na lógica do servidor. Em vez disso, armazene-as de forma segura no Azure Key Vault, obtenha-as através de variáveis de ambiente e referencia-as usando as definições do site.
Example
Server.SiteSetting.Get("Search/Enabled");
EnvironmentVariable
Lê o valor de uma variável de ambiente.
Example
Server.EnvironmentVariable.get("SITEPATH");
Sítio Web
Fornece detalhes do registro atual do site no Dataverse.
Example
Server.Website.adx_primarydomain;
User
Fornece detalhes do usuário conectado. Retorna null se anônimo.
Example
Server.User.fullname;
Dataverse
Use o Server.Connector.Dataverse objeto para realizar operações CRUD em tabelas Dataverse e invocar APIs personalizadas.
Observação
- Quando te referes às tabelas do Dataverse no teu código, usa o EntitySetName. Por exemplo, para aceder à
accounttabela, use o EntitySetNameaccounts.
CreateRecord
Crie um novo registo.
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\"}");
RetrieveRecord
Recupera um único registro por 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");
RecuperarMultipleRecords
Recupera uma coleção de registros.
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");
UpdateRecord
Atualiza um registro existente por 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
Exclui um registro por 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)
Invoque uma função acoplada:
Server.Connector.Dataverse.InvokeCustomApi("get", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundFunction");
Invoque uma ação vinculada:
Server.Connector.Dataverse.InvokeCustomApi("post", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundAction", "{ \"parameter1\": \"value1\" }");
Invocar uma ação não vinculada:
Server.Connector.Dataverse.InvokeCustomApi("post", "new_Action", "{ \"parameter1\": \"value1\" }");
Exemplo: Resposta
{
"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
Use o logger para escrever mensagens de diagnóstico que possa visualizar na extensão DevTools.
Exemplo:
Server.Logger.Log("Information message");
Server.Logger.Warn("Warning message");
Server.Logger.Error("Error message");
Context
O Server.Context objeto fornece informação sobre a invocação lógica atual do servidor. As propriedades disponíveis dependem de a lógica do servidor ter sido invocada através de um pedido HTTP ou de um template Liquid.
Properties
| Nome | Disponível para | Description |
|---|---|---|
ActivityId |
HTTP e Liquid | Identificador único para a invocação lógica do servidor. Use este valor para correlacionar registos e resolver problemas numa operação. |
Body |
HTTP | Corpo bruto do pedido HTTP. |
FunctionName |
HTTP e Liquid | Nome da função JavaScript que está a ser invocada. Para uma invocação líquida, este valor corresponde ao operation parâmetro da serverlogic etiqueta. |
Headers |
HTTP | Cabeçalhos de solicitação HTTP. |
HttpMethod |
HTTP | Método de pedido HTTP, como GET, POST, PUT, PATCH, ou DELETE. |
Input |
Líquido | Cadeia de entrada fornecida através do input parâmetro da serverlogic etiqueta Líquido. Quando a entrada contiver dados estruturados, analise-os como JSON antes de os usar. |
QueryParameters |
HTTP | Parâmetros de sequência de consulta a partir do pedido HTTP. |
ServerLogicName |
HTTP e Liquid | Nome do registo lógico do servidor que está a ser invocado. |
Url |
HTTP | URL completo do pedido HTTP. |
Contexto do pedido de acesso HTTP
O exemplo seguinte lê o id parâmetro de consulta quando a lógica do servidor é invocada através de um pedido HTTP:
var id = Server.Context.QueryParameters["id"];
Também pode aceder a metadados de pedidos:
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
});
}
Contexto de invocação do Access Liquid
Quando a lógica do servidor é invocada a partir do Liquid, use Server.Context.Input para ler o valor fornecido pelo parâmetro da input etiqueta.
Por exemplo, o seguinte Liquid passa entrada JSON:
{% assign inputData = '{"category":"active","maximumResults":5}' %}
{% serverlogic output: result, name: 'customer-summary', operation: 'getSummary', input: inputData %}
A operação lógica do servidor pode analisar a informação de entrada e aceder sobre a invocação líquida:
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
});
}
Próximo passo
Como interagir com tabelas Dataverse usando a lógica do servidor
Informações relacionadas
Visão geral da lógica do servidor
Lógica do servidor de autor