Crear una API personalizada con archivos de solución
Nota
Este es un tema avanzado que asume que ya ha leído y comprendido estos temas:
Si bien puede crear API personalizadas a través de un diseñador o con código, también puede definirlas trabajando con archivos dentro de una solución. El uso de archivos en una solución puede ser la opción preferida para los editores de soluciones que aplican las mejores prácticas recomendadas para Administración del ciclo de vida de aplicaciones (ALM).
Un archivo de solución es un archivo comprimido (zip) que se ha exportado desde una instancia Microsoft Dataverse. El contenido de este archivo se puede extraer y los componentes se pueden registrar en un repositorio de origen. El contenido se puede editar y luego volver a comprimir. Los cambios aplicados a la solución son parte de la solución y se crean cuando se importe la solución.
Nota
Estos procesos suelen estar automatizados con herramientas y procesos que están más allá del alcance de este tema. Este tema se centrará en el escenario simple de crear una API personalizada manipulando manualmente los archivos extraídos en una solución para demostrar cómo se pueden usar los datos de los archivos para crear una API personalizada. Más información : Control de código fuente con archivos de solución
Paso 1: crear una solución no administrada
No debe intentar componer un archivo de solución manualmente. Utilice las herramientas de Power Apps para generar un archivo de solución. Siga los pasos de los siguientes artículos para crear y exportar una solución. La solución no necesita contener ningún componente de solución.
-
Para este ejemplo, la solución se define simplemente así:
-
Para este ejemplo, asegúrese de exportar una solución no administrada. La solución administrada es la predeterminada.
Puede encontrar el archivo exportado en su carpeta de descargas. Tiene un nombre que dependerá del nombre y versión de la solución, en este caso: CustomAPIExample_1_0_0_2.zip
.
Paso 2: extraer el contenido de la solución y actualizar la versión
La solución es un archivo comprimido (zip).
Haga clic con el botón derecho en el archivo y elija Extraer todo... desde el menú contextual.
Debería ver solo los siguientes tres archivos en la carpeta:
[Content_Types].xml
customizations.xml
solution.xml
Abra el archivo solution.xml y localice el elemento
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>
Actualice el valor en 1. En este ejemplo, es
<Version>1.0.0.2</Version>
.Guarde el archivo.
Paso 3: agregue la definición de la API personalizada
Todas las API personalizadas de una solución se encuentran dentro de una carpeta llamada customapis. Dentro de esa carpeta, cada API personalizada estará en una carpeta con el nombre de la propiedad UniqueName
de la API personalizada.
Dentro de la carpeta, los datos que representan la API personalizada se encuentran dentro de un archivo XML llamado customapi.xml
En la carpeta con los archivos extraídos, cree una nueva carpeta llamada
customapis
.En la carpeta customapis, cree una carpeta con el
UniqueName
de la API personalizada que desea crear. En este ejemplo, usamossample_CustomAPIExample
.En la carpeta sample_CustomAPIExample que creó, cree un archivo llamado
customapi.xml
.Edite
customapi.xml
para establecer las propiedades de la API personalizada que desea crear. En este ejemplo, usaremos lo siguiente xml:<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>
Consulte la información de Columnas de tabla de API personalizadas para establecer los valores de los elementos.
Establecer una relación con un tipo de complemento (opcional)
Si ya tiene un tipo de complemento que desea asociar con esta API personalizada, puede incluir una referencia a él en esta definición agregando el siguiente elemento dentro del elemento <customapi>
:
<plugintypeid>
<plugintypeexportkey>{Add the GUID value of the plug-in type export key}</plugintypeexportkey>
</plugintypeid>
O
<plugintypeid>
<plugintypeid>{Add the GUID value of the plug-in type id}</plugintypeid>
</plugintypeid>
Nota
Cualquier valor funcionará, pero le recomendamos que utilice plugintypeexportkey
.
Puede recuperar los valores PluginTypeExportKey y PluginTypeId usando una consulta de API web como esta, en la que conoce el nombre del tipo de complemento:
GET [Organization Uri]/api/data/v9.2/plugintypes?$select=name,plugintypeid,plugintypeexportkey&$filter=contains(name,'MyPlugin.TypeName')
Paso 4: agregue cualquier parámetro de solicitud de API personalizado
Todas las definiciones de parámetros de solicitud para la API personalizada se incluyen en una carpeta llamada customapirequestparameters
. Dentro de esa carpeta, cada parámetro de solicitud de API personalizada estará en una carpeta con el nombre de la propiedad UniqueName
del parámetro de la solicitud de la API personalizada.
- Si su API personalizada tiene parámetros de solicitud, dentro de la carpeta para la API personalizada que creó en el paso anterior, cree una carpeta llamada
customapirequestparameters
. - Para cada parámetro de solicitud de API personalizada, cree una nueva carpeta utilizando la propiedad
UniqueName
del parámetro de solicitud de API personalizada. En este ejemplo, usamosStringParameter
. - Dentro de la carpeta, agregue un archivo xml llamado
customapirequestparameter.xml
. - Edite el archivo customapirequestparameter.xml para establecer las propiedades de la API personalizada que desea crear. En este ejemplo, usamos lo siguiente:
<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>
Consute la información en Columnas de tabla de CustomAPIRequestParameter para establecer los valores de los elementos.
Paso 5: agregar propiedades de respuesta de API personalizadas
Todas las definiciones de propiedades de respuesta para la API personalizada se incluyen en una carpeta llamada customapiresponseproperties
. Dentro de esa carpeta, cada propiedad de respuesta de API personalizada estará en una carpeta con el nombre de la propiedad de respuesta UniqueName
de la API personalizada.
- Si su API personalizada tiene propiedades de respuesta, dentro de la carpeta de la API personalizada que creó en el Paso 3: agregar la definición de la API personalizada, cree una carpeta llamada
customapiresponseproperties
. - Para cada propiedad de respuesta de la API personalizada, cree una nueva carpeta utilizando la propiedad
UniqueName
de la propiedad de respuesta de la API personalizada. En este ejemplo, usamosStringProperty
. - Dentro de la carpeta, agregue un archivo xml llamado
customapiresponseproperty.xml
. - Edite el archivo customapiresponseproperty.xml para establecer las propiedades de la API personalizada que desea crear. En este ejemplo, usamos lo siguiente:
<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>
Consute la información en Columnas de tabla de CustomAPIResponseProperty para establecer los valores de los elementos.
Nota
Si bien el esquema para los parámetros de solicitud y las propiedades de respuesta es muy similar, tenga en cuenta que isoptional
no es válido para una propiedad de respuesta y provocará un error cuando intente importar la solución.
Paso 6: comprima los archivos para crear un nuevo archivo de solución
Regrese a la carpeta donde extrajo el archivo de solución original en el Paso 2: extraer el contenido de la solución y actualizar la versión
Seleccione todos los archivos extraídos y la carpeta customapis que creó.
Haga clic con el botón secundario en los archivos seleccionados y elija Enviar a > Carpeta comprimida (en zip).
Puede cambiar el nombre del archivo resultante para que sea el que desee. Para este ejemplo, cámbiele el nombre para que coincida con el archivo de solución exportado original:
CustomAPIExample_1_0_0_2.zip
.
Paso 7: importar la solución con la definición de su API personalizada
Vuelva a Power Apps y seleccione Soluciones.
Seleccione Importar y siga las instrucciones para seleccionar el archivo de solución que creó en el paso anterior.
Nota
Si ve una advertencia que dice Esta versión del paquete de solución ya está instalada, no debe haber actualizado el elemento de la solution.xml
Version
como se describe en el Paso 2: extraer el contenido de la solución y actualizar la versión.Debería aparecerle una advertencia que diga Este paquete de solución contiene una actualización para una solución que ya está instalada. Seleccione Importar para continuar.
Espere unos minutos mientras se completa la importación de la solución.
Nota
Es posible que vea un error si se está instalando otra solución al mismo tiempo. Más información: La instalación o la desinstalación de la solución no se ha podido realizar porque se estaba instalando o desinstalando otra solución al mismo tiempo
Paso 8: verificar que la API personalizada se agregó a su solución
Abra la solución que creó y verifique que la API personalizada y los parámetros de solicitud asociados y las propiedades de respuesta estén incluidos.
En este punto, puede probar su API siguiendo los pasos descritos en Probar la API personalizada
Actualizar una API personalizada en una solución
Después de enviar una solución que contiene una API personalizada, es posible que desee realizar algunos cambios en la API personalizada de la solución no administrada. Puede agregar nuevos parámetros o propiedades de respuesta y realizar cambios en aquellas columnas que admiten su actualización, como displayname
y description
.
Importante
No puede introducir cambios en API personalizadas en una solución que modifique cualquiera de las propiedades que no se pueden cambiar después de guardarse. Cuando instale una versión más reciente de una solución que contenga una definición de API personalizada, intentará actualizar las propiedades de API personalizada, de los parámetros de solicitud de API personalizados y de respuesta de API personalizada. Una actualización de la solución es lo mismo que intentar actualizar la API personalizada utilizando cualquier otro método.
Las siguientes se indican propiedades en los archivos de la solución que no se pueden cambiar después de crear una API personalizada:
- Propiedades de API personalizadas:
allowedcustomprocessingsteptype
bindingtype
boundentitylogicalname
isfunction
uniquename
workflowsdkstepenabled
- Propiedades RequestParameter de la API personalizada:
isoptional
logicalentityname
type
uniquename
- Propiedades de la propiedad de respuesta de la API personalizada:
logicalentityname
type
uniquename
Más información: Tablas de la API personalizada
Proporcionar etiquetas localizadas con la solución
Como alternativa al proceso descrito en Valores de etiqueta localizados, si está editando los archivos de solución para entidades de API personalizadas, puede proporcionar traducciones directamente en estos archivos. Por ejemplo, si desea proporcionar etiquetas localizadas en japonés para su API personalizada, puede proporcionarlas para las propiedades description
y displayname
, como se muestra a continuación:
<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>
Consulte también
Crear y usar API personalizadas
Tablas CustomAPI
Cree una API personalizada con la herramienta de registro de complementos
Crear una API personalizada en Power Apps
Crear una API personalizada con código
Crear sus propios mensajes
Nota
¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)
La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).