Modèles web en tant qu’API

Effectué

La table Page Template comporte un paramètre qui spécifie si la page doit utiliser les modèles d’en-tête et de pied de page de site web courants lorsque le modèle web est utilisé.

Lorsque l’en-tête et le pied de page du site web ne sont pas utilisés, le modèle prend en charge la génération de la sortie de page entière. Si vous affichez du code HTML, cette sortie inclut le doctype, l’élément root <html> et tous les éléments compris entre. Cette approche peut s’avérer utile dans plusieurs scénarios différents, notamment lorsque :

  • Les pages spéciales doivent avoir un aspect différent du reste du portail, telles que les pages d’arrivée d’une campagne marketing.

  • Le modèle web génère du contenu non HTML en renvoyant des données au format XML, JSON ou autres.

Par exemple, vous pouvez créer un modèle web qui renvoie une liste de comptes ou toute autre donnée à laquelle l’utilisateur actuel a accès, dans un format JSON.

{% entityview logical_name:'account', name:'Active Accounts' %}
[
{% for acc in entityview.records -%}
    {
        "name": "{{ acc.name }}",
        "phone": "{{ acc.telephone1 }}"
    }{% unless forloop.last %},{% endunless %}
{% endfor -%}
]
{% endentityview %}

Remarque

Dans cet exemple, au lieu de la balise entityview, vous pouvez utiliser une requête FetchXML dans la balise fetchxml. L’utilisation de FetchXML inline ajoute une certaine flexibilité à la requête. Vous pouvez créer la requête dynamiquement à l’aide de paramètres de modèle, voire d’un objet request qui comporte les paramètres de chaîne de requête d’une requête de page HTTP en cours.

Ce modèle serait utilisé sans en-tête ni pied de page, avec le type MIME défini sur application/json. La sortie serait similaire à l’exemple suivant :

[
  {
      "name": "A Datum Corporation",
      "phone": "425-555-0182"
  },
  {
      "name": "A Datum Fabrication",
      "phone": "303-555-0134"
  },
  {
      "name": "A Datum Integration",
      "phone": "512-555-0163"
  },
  {
      "name": "A. Datum",
      "phone": "+86-23-4444-0100"
  },
  {
      "name": "Adventure Works",
      "phone": "+27-264-1234567"
  }
]

Conseil

Envisagez d’utiliser l’API Web des portails pour l’extraction des données, le cas échéant. L’API web du portail est rapide et évite complètement le traitement des modèles côté serveur. Cependant, si une transformation de données est requise, vous devrez l’exécuter à l’aide de JavaScript côté client. À l’inverse, les modèles Liquid peuvent transformer et utiliser les données entièrement côté serveur. Pour en savoir plus, consultez Les portails lisent les opérations à l’aide de l’API web.

La page qui utilise ce modèle web ne serait pas visible par les utilisateurs utilisant un navigateur, mais plutôt appelée à partir du code JavaScript, ce qui définirait efficacement un point de terminaison d’API pour votre solution. Sur une autre page, JavaScript pourrait charger et afficher ces données selon les besoins.

L’autorisation est en place et l’accès aux données Microsoft Dataverse utilisant ce modèle « administré à distance » n’est pas différent si la sortie a été affichée au format HTML. La page des appels requiert généralement une authentification utilisateur avant l’appel du point de terminaison.