Share via


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é).