Utiliser les opérations d’écriture, de mise à jour et de suppression de l’API Web des portails
Notes
À compter du 12 octobre 2022, le portail Power Apps devient Power Pages. Plus d’informations : Microsoft Power Pages est maintenant généralement disponible (blog)
Nous allons bientôt migrer et fusionner la documentation des portails Power Apps avec la documentation de Power Pages.
Vous pouvez effectuer les opérations API web disponibles dans les portails. Les opérations de l’API Web se composent de requêtes et de réponses HTTP. Cet article fournit des exemples d’opérations d’écriture, de mise à jour et de suppression, des méthodes, des URI et des exemples de JSON que vous pouvez utiliser dans les requêtes HTTP.
Important
- La version de votre portail doit être 9.3.3.x ou ultérieure pour que cette fonctionnalité soit opérationnelle.
Conditions préalables
Activer la table et le champ pour les opérations de l’API Web. Plus d’informations :Paramètres du site pour l’API Web
L’API Web des portails accède aux enregistrements de table et suit les autorisations de table accordées aux utilisateurs via les rôles Web associés. Assurez-vous de configurer les autorisations de table appropriées. Plus d’informations : Créer des rôles Web
Créer un enregistrement dans une table
Notes
Lorsqu’on se réfère aux tables Dataverse à l’aide de l’API Web des portails, vous devez utiliser EntitySetName, par exemple, pour accéder à la table compte, la syntaxe du code utilisera le nom EntitySetName de comptes.
Création de base
Opération | Méthode | URI | Exemple JSON |
---|---|---|---|
Création de base | POST | [Portal URI]/_api/accounts | {"name":"Sample Account"} |
Exemple de JSON pour créer des enregistrements de table associés en une seule opération
À titre d’exemple, le corps de requête suivant publié sur la table Compte créera un total de quatre nouvelles tables, y compris le compte, dans le contexte de la création du compte.
- Un contact est créé car il est défini en tant que propriété d’objet de la propriété de navigation à valeur unique
primarycontactid
. - Une opportunité est créée car elle est définie en tant qu’objet dans un tableau défini sur la valeur d’une propriété de navigation à valeur de collection
opportunity_customer_accounts
. - Une tâche est créée car elle est définie en tant qu’objet dans un tableau défini sur la valeur d’une propriété de navigation à valeur de collection
Opportunity_Tasks
.
{
"name": "Sample Account",
"primarycontactid":
{
"firstname": "Alton",
"lastname": "Stott"
},
"opportunity_customer_accounts":
[
{
"name": "Opportunity associated to Sample Account",
"Opportunity_Tasks":
[
{ "subject": "Task associated to opportunity" }
]
}
]
}
Associer des enregistrements de table lors de la création
Operation | Method | URI | Exemple JSON |
---|---|---|---|
Associer des enregistrements de table lors de la création | POST | [Portal URI]/_api/accounts | {"name":"Sample Account","primarycontactid@odata.bind":"/contacts(00000000-0000-0000-0000-000000000001)"} |
Exemple JSON pour créer une annotation via l’API web
{
"new_attribute1": "test attribute 1",
"new_attribute2": "test attribute 2",
"new_comments": "test comments",
"new_recordurl": recordURL,
"new_feedback_Annotations":
[
{
"notetext": "Screenshot attached",
"subject": "Attachment",
"filename": file.name,
"mimetype": file.type,
"documentbody": base64str,
}
]
}
documentbody
contient la pièce jointe sous forme d’une chaîne Base64.
Mettre à jour et supprimer des enregistrements à l’aide de l’API Web
Mise à jour de base
Opération | Méthode | URI | Exemple JSON |
---|---|---|---|
Mise à jour de base | PATCH | [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001) | { "name": "Updated Sample Account ", "creditonhold": true, "address1_latitude": 47.639583, "description": "This is the updated description of the sample account", "revenue": 6000000, "accountcategorycode": 2 } |
Mettre à jour une valeur de propriété unique
Opération | Méthode | URI | Exemple JSON |
---|---|---|---|
Mettre à jour une valeur de propriété unique | PUT | [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001)/name | {"value": "Updated Sample Account Name"} |
Supprimer ou effacer une valeur de champ
Operation | Method | URI |
---|---|---|
Supprimer ou effacer une valeur de champ | DELETE | [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001)/description |
Suppression de base
Opération | Méthode | URI |
---|---|---|
Suppression de base | DELETE | [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000001) |
Associer et dissocier les tables à l’aide de l’API web
Ajouter une référence à une propriété de navigation avec une valeur de collection
Opération | Méthode | URI | Exemple JSON |
---|---|---|---|
Ajouter une référence à une propriété de navigation avec une valeur de collection | PUBLICATION | [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref | {"@odata.id":"[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)"} |
Supprimer une référence à une table
Opération | Méthode | URI |
---|---|---|
Supprimer une référence à une table | DELETE | [Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref?$id=[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001) |
Supprimer une référence à une table pour une propriété de navigation à valeur unique
Pour une propriété de navigation à valeur unique, supprimez le paramètre de chaîne de requête $id.
Opération | Méthode | URI |
---|---|---|
Supprimer une référence à une table pour une propriété de navigation à valeur unique | DELETE | [Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref |
Modifier la référence dans une propriété de navigation à valeur unique
Opération | Méthode | URI | Exemple JSON |
---|---|---|---|
Modifier la référence dans une propriété de navigation à valeur unique | PUT | [Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref | {"@odata.id":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"} |
Associer des tables lors de la création
Des tables peuvent être créées avec Relations en utilisant des insertions profondes.
Associer des tables lors de la mise à jour à l’aide d’une propriété de navigation à valeur unique
Vous pouvez associer des tables lors de la mise à jour en utilisant le même message décrit dans Mise à jour de base, plus tôt dans ce sujet, mais vous devez utiliser l’annotation @odata.bind
pour définir la valeur d’une propriété de navigation à valeur unique. L’exemple suivant modifie le compte associé à une opportunité en utilisant la propriété de navigation à valeur unique customerid_account
.
Associer des tables lors de la mise à jour à l’aide d’une propriété de navigation à valeur unique
Opération | Méthode | URI | Exemple JSON |
---|---|---|---|
Associer des tables lors de la mise à jour à l’aide d’une propriété de navigation à valeur unique | PATCH | [Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001) | {"customerid_account@odata.bind":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"} |
Exemples AJAX d’API Web
Cet exemple montre comment créer, mettre à jour et supprimer des enregistrements de table à l’aide de JavaScript et XML asynchrones (AJAX).
Fonction Wrapper AJAX
(function(webapi, $){
function safeAjax(ajaxOptions) {
var deferredAjax = $.Deferred();
shell.getTokenDeferred().done(function (token) {
// add headers for AJAX
if (!ajaxOptions.headers) {
$.extend(ajaxOptions, {
headers: {
"__RequestVerificationToken": token
}
});
} else {
ajaxOptions.headers["__RequestVerificationToken"] = token;
}
$.ajax(ajaxOptions)
.done(function(data, textStatus, jqXHR) {
validateLoginSession(data, textStatus, jqXHR, deferredAjax.resolve);
}).fail(deferredAjax.reject); //AJAX
}).fail(function () {
deferredAjax.rejectWith(this, arguments); // on token failure pass the token AJAX and args
});
return deferredAjax.promise();
}
webapi.safeAjax = safeAjax;
})(window.webapi = window.webapi || {}, jQuery)
Create
webapi.safeAjax({
type: "POST",
url: "/_api/accounts",
contentType: "application/json",
data: JSON.stringify({
"name": "Sample Account"
}),
success: function (res, status, xhr) {
//print id of newly created table record
console.log("entityID: "+ xhr.getResponseHeader("entityid"))
}
});
Update
webapi.safeAjax({
type: "PATCH",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
contentType: "application/json",
data: JSON.stringify({
"name": "Sample Account - Updated"
}),
success: function (res) {
console.log(res);
}
});
Delete
webapi.safeAjax({
type: "DELETE",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Étape suivante
Didacticiel : Utiliser l’API web des portails
Voir aussi
Vue d’ensemble des portails Web API
Les portails lisent les opérations à l’aide de l’API Web
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é).