Créer une API personnalisée avec des fichiers de solution
Notes
Cette rubrique est une rubrique avancée qui suppose que vous avez déjà lu et compris ces rubriques :
Bien que vous puissiez créer des API personnalisées via un concepteur ou avec du code, vous pouvez également les définir en utilisant des fichiers d’une solution. L’utilisation de fichiers dans une solution peut être l’option préférée pour les éditeurs de solutions qui appliquent les bonnes pratiques recommandées de la gestion du cycle de vie des applications (ALM).
Un fichier de solution est un fichier compressé (zip) qui a été exporté à partir d’une instance Microsoft Dataverse. Le contenu de ce fichier peut être extrait et les composants archivés dans un référentiel source. Le contenu peut être édité puis compressé à nouveau. Les modifications appliquées à la solution font partie de la solution et sont créées lors de l’importation de celle-ci.
Notes
Ces processus sont généralement automatisés avec des outils et des processus qui dépassent le cadre de la présente rubrique. Cette rubrique se concentre sur le scénario simple de création d’une API personnalisée en manipulant manuellement les fichiers extraits d’une solution, pour montrer comment utiliser les données des fichiers pour créer une API personnalisée. En savoir plus : Contrôle de code source avec les fichiers de solution
Étape 1 : Créer une solution non gérée
Vous ne devez pas essayer de composer un fichier de solution manuellement. Utilisez les outils de Power Apps pour générer un fichier de solution. Suivez les étapes décrites dans les articles suivants pour créer et exporter une solution. La solution ne doit pas nécessairement contenir des composants de solution.
-
Pour cet exemple, la solution est définie simplement comme ceci :
-
Pour cet exemple, assurez-vous d’exporter une solution non gérée. Une solution gérée est la valeur par défaut.
Vous pouvez trouver le fichier exporté dans votre dossier de téléchargements. Il a un nom dépendant du nom et de la version de la solution. Dans le cas présent : CustomAPIExample_1_0_0_2.zip
.
Étape 2 : Extraire le contenu de la solution et mettre à jour la version
La solution est un fichier compressé (zip).
Cliquez avec le bouton droit sur le fichier et choisissez Extraire tout... dans le menu contextuel.
Vous ne devriez voir que les trois fichiers suivants dans le dossier :
[Content_Types].xml
customizations.xml
solution.xml
Ouvrez le fichier solution.xml et localisez l’élément
Version
.<ImportExportXml version="9.1.0.23474" SolutionPackageVersion="9.1" languagecode="1033" generatedBy="CrmLive" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SolutionManifest> <UniqueName>CustomAPIExample</UniqueName> <LocalizedNames> <LocalizedName description="Custom API Example" languagecode="1033" /> </LocalizedNames> <Descriptions /> <Version>1.0.0.1</Version>
Mettez à jour la valeur de 1. Dans cet exemple, c’est
<Version>1.0.0.2</Version>
.Enregistrez le fichier.
Étape 3 : Ajouter la définition de l’API personnalisée
Toutes les API personnalisées d’une solution se trouvent dans un dossier nommé customapis. Dans ce dossier, chaque API personnalisée sera dans un dossier nommé d’après la propriété UniqueName
de l’API personnalisée.
Dans le dossier, les données représentant l’API personnalisée se trouvent dans un fichier XML nommé customapi.xml
Dans le dossier contenant les fichiers extraits, créez un nouveau dossier nommé
customapis
.Dans le dossier customapis, créez un dossier portant le
UniqueName
de l’API personnalisée que vous souhaitez créer. Pour cet exemple, nous utilisonssample_CustomAPIExample
.Dans le dossier sample_CustomAPIExample que vous avez créé, créez un fichier nommé
customapi.xml
.Modifiez le fichier
customapi.xml
pour définir les propriétés de l’API personnalisée que vous souhaitez créer. Pour cet exemple, nous utilisons le fichier xml suivant :<customapi uniquename="sample_CustomAPIExample"> <allowedcustomprocessingsteptype>0</allowedcustomprocessingsteptype> <bindingtype>0</bindingtype> <boundentitylogicalname /> <description default="A simple example of a custom API"> <label description="A simple example of a custom API" languagecode="1033" /> </description> <displayname default="Custom API Example"> <label description="Custom API Example" languagecode="1033" /> </displayname> <iscustomizable>0</iscustomizable> <executeprivilegename /> <isfunction>0</isfunction> <isprivate>0</isprivate> <name>sample_CustomAPIExample</name> <plugintypeid /> </customapi>
Voir les informations dans Colonnes de tableau d’API personnalisées pour définir les valeurs des éléments.
Définir une relation avec un type de plug-in (facultatif)
Si vous disposez déjà d’un type de plug-in que vous souhaitez associer à cette API personnalisée, vous pouvez inclure une référence à celui-ci dans cette définition en ajoutant l’élément suivant dans l’élément <customapi>
:
<plugintypeid>
<plugintypeexportkey>{Add the GUID value of the plug-in type export key}</plugintypeexportkey>
</plugintypeid>
OU
<plugintypeid>
<plugintypeid>{Add the GUID value of the plug-in type id}</plugintypeid>
</plugintypeid>
Notes
L’une ou l’autre valeur fonctionne, mais nous vous recommandons d’utiliser plugintypeexportkey
.
Vous pouvez récupérer les valeurs PluginTypeExportKey et PluginTypeId à l’aide d’une requête d’API Web comme celle-ci, où vous connaissez le nom du type de plug-in :
GET [Organization Uri]/api/data/v9.2/plugintypes?$select=name,plugintypeid,plugintypeexportkey&$filter=contains(name,'MyPlugin.TypeName')
Étape 4 : Ajouter des paramètres de requête d’API personnalisée
Toutes les définitions des paramètres de requête pour l’API personnalisée sont incluses dans un dossier appelé customapirequestparameters
. Dans ce dossier, chaque paramètre de requête de l’API personnalisée sera dans un dossier nommé d’après la propriété de paramètre de requête UniqueName
de l’API personnalisée.
- Si votre API personnalisée a des paramètres de requête, dans le dossier de l’API personnalisée que vous avez créé à l’étape précédente, créez un dossier nommé
customapirequestparameters
. - Pour chaque paramètre de requête d’API personnalisé, créez un nouveau dossier en utilisant la propriété
UniqueName
du paramètre de requête de l’API personnalisée. Pour cet exemple, nous utilisonsStringParameter
. - Dans le dossier, ajoutez un fichier xml nommé
customapirequestparameter.xml
. - Modifiez le fichier customapirequestparameter.xml pour définir les propriétés de l’API personnalisée que vous souhaitez créer. Pour cet exemple, nous utilisons les valeurs suivantes :
<customapirequestparameter uniquename="StringParameter">
<description default="The StringParameter request parameter for custom API Example">
<label description="The StringParameter request parameter for custom API Example" languagecode="1033" />
</description>
<displayname default="Custom API Example String Parameter">
<label description="Custom API Example String Parameter" languagecode="1033" />
</displayname>
<iscustomizable>0</iscustomizable>
<isoptional>0</isoptional>
<logicalentityname />
<name>sample_CustomAPIExample.StringParameter</name>
<type>10</type>
</customapirequestparameter>
Voir les informations dans Colonnes de table CustomAPIRequestParameter pour définir les valeurs des éléments.
Étape 5 : Ajouter des propriétés de réponse de l’API personnalisée
Toutes les définitions des propriétés de réponse pour l’API personnalisée sont incluses dans un dossier appelé customapiresponseproperties
. Dans ce dossier, chaque propriété de réponse de l’API personnalisée sera dans un dossier nommé d’après la propriété UniqueName
de la propriété de réponse de l’API personnalisée.
- Si votre API personnalisée a des propriétés de réponse, dans le dossier de l’API personnalisée que vous avez créé à l’Étape 3 : Ajouter la définition de l’API personnalisée, créez un dossier nommé
customapiresponseproperties
. - Pour chaque propriété de réponse de l’API personnalisé, créez un nouveau dossier en utilisant la propriété
UniqueName
de la propriété de réponse de l’API personnalisée. Pour cet exemple, nous utilisonsStringProperty
. - Dans le dossier, ajoutez un fichier xml nommé
customapiresponseproperty.xml
. - Modifiez le fichier customapiresponseproperty.xml pour définir les propriétés de l’API personnalisée que vous souhaitez créer. Pour cet exemple, nous utilisons les valeurs suivantes :
<customapiresponseproperty uniquename="StringProperty">
<description default="The StringProperty response property for custom API Example">
<label description="The StringProperty response property for custom API Example" languagecode="1033" />
</description>
<displayname default="Custom API Example String Property">
<label description="Custom API Example String Property" languagecode="1033" />
</displayname>
<iscustomizable>0</iscustomizable>
<logicalentityname />
<name>sample_CustomAPIExample.StringProperty</name>
<type>10</type>
</customapiresponseproperty>
Voir les informations dans Colonnes de table CustomAPIResponseProperty pour définir les valeurs des éléments.
Notes
Bien que le schéma des paramètres de requête et des propriétés de réponse soit très similaire, notez que isoptional
n’est pas valide pour une propriété de réponse et provoquera une erreur lorsque vous essaierez d’importer la solution.
Étape 6 : Compresser les fichiers pour créer un nouveau fichier de solution
Revenez au dossier dans lequel vous avez extrait le fichier de solution d’origine à l’Étape 2 : Extraire le contenu de la solution et mettre à jour la version
Sélectionnez tous les fichiers extraits et le dossier customapis que vous avez créé.
Cliquez avec le bouton droit sur les fichiers sélectionnés et choisissez Envoyer vers > Dossier compressé (zippé).
Vous pouvez renommer le fichier résultant comme vous le souhaitez. Pour cet exemple, renommez-le pour qu’il corresponde au fichier de solution exporté d’origine :
CustomAPIExample_1_0_0_2.zip
.
Étape 7 : Importer la solution avec la définition de votre API personnalisée
Revenez à Power Apps et sélectionnez Solutions.
Sélectionnez Importer et suivez les instructions pour sélectionner le fichier de solution que vous avez créé à l’étape précédente.
Notes
Si vous voyez un avertissement disant Cette version du package de solution est déjà installée, vous ne devez pas avoir mis à jour l’élément
Version
du fichier solution.xml comme décrit à l’Étape 2 : Extraire le contenu de la solution et mettre à jour la version.Vous devez voir un avertissement disant Ce package de solution contient une mise à jour pour une solution déjà installée. Sélectionnez Importer pour continuer.
Attendez quelques minutes que l’importation de la solution se termine.
Notes
Il est possible que vous voyiez une erreur si une autre solution est installée en même temps. Pour plus d’informations : L’installation ou la suppression de la solution a échoué en raison de l’installation ou de la suppression d’une autre solution en même temps
Étape 8 : Vérifier que l’API personnalisée a été ajoutée à votre solution
Ouvrez la solution que vous avez créée et vérifiez que l’API personnalisée et les paramètres de requête et les propriétés de réponse associés sont inclus.
À ce stade, vous pouvez tester votre API en suivant les étapes décrites dans Tester votre API personnalisée
Mettre à jour une API personnalisée dans une solution
Après avoir livré une solution contenant une API personnalisée, vous souhaitez peut-être apporter des modifications à l’API personnalisée dans votre solution non gérée. Vous pouvez ajouter de nouveaux paramètres ou propriétés de réponse et apporter des modifications aux colonnes qui prennent en charge la mise à jour, telles que displayname
et description
.
Important
Vous ne pouvez pas introduire de modification dans une API personnalisée dans une solution qui modifie l’une des propriétés qui ne peuvent pas être modifiées après leur enregistrement. Lorsque vous installez une version plus récente d’une solution qui contient une définition d’une API personnalisée, elle tente de mettre à jour les propriétés de l’API personnalisée, des paramètres de demande de l’API personnalisée et de la réponse de l’API personnalisée. Une mise à jour de solution revient à essayer de mettre à jour l’API personnalisée à l’aide de toute autre méthode.
Les propriétés suivantes des fichiers de solution ne peuvent pas être modifiées après la création d’une API personnalisée :
- Propriétés d’API personnalisées :
allowedcustomprocessingsteptype
bindingtype
boundentitylogicalname
isfunction
uniquename
workflowsdkstepenabled
- Propriétés RequestParameter d’API personnalisée :
isoptional
logicalentityname
type
uniquename
- Propriétés de réponse de l’API personnalisée :
logicalentityname
type
uniquename
Pour plus d’informations : Tables CustomAPI
Fournir des étiquettes localisées avec la solution
Au lieu d’utiliser le processus décrit dans Valeurs des étiquettes localisées, si vous mettez à jour les fichiers de solution pour les entités API personnalisées, vous pouvez fournir des traductions directement dans ces fichiers. Par exemple, si vous souhaitez fournir des étiquettes localisées en japonais pour votre API personnalisée, vous pouvez les fournir pour les propriétés description
et displayname
, comme indiqué ci-dessous :
<customapi uniquename="sample_CustomAPIExample">
<allowedcustomprocessingsteptype>0</allowedcustomprocessingsteptype>
<bindingtype>0</bindingtype>
<description default="A simple example of a custom API">
<label description="A simple example of a custom API" languagecode="1033" />
<label description="カスタムAPIの簡単な例" languagecode="1041" />
</description>
<displayname default="Custom API Example">
<label description="Custom API Example" languagecode="1033" />
<label description="カスタムAPIの例" languagecode="1041" />
</displayname>
<iscustomizable>0</iscustomizable>
<isfunction>0</isfunction>
<name>sample_CustomAPIExample</name>
</customapi>
Voir aussi
Créer et utiliser des API personnalisées
Tables CustomAPI
Créer une API personnalisée à l’aide de l’outil d’enregistrement de plug-in
Créer une API personnalisée dans Power Apps
Créer une API personnalisée avec du code
Créer vos propres messages
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).