Portaalin verkko-ohjelmointirajapinnalla käytettävät toiminnot (esiversio)

[Tämä artikkeli sisältää julkaisua edeltävää materiaalia ja voi muuttua.]

Voit suorittaa portaaleissa käytettävissä olevia verkko-ohjelmointirajapinnan toimintoja. Verkko-ohjelmointirajapinnan toiminnot koostuvat HTTP-pyynnöistä ja -vastauksista. Tässä artikkelissa käsitellään näytetoimintoja, menetelmiä, URI-osoitteita ja JSON-näytettä, jota voi käyttää HTTP-pyynnössä.

Tärkeä

Entiteettitietueen luominen

Perusluonti

Toiminto Menetelmä URI JSON-näyte
Perusluonti VIESTI [Portaalin URI]/_api/accounts {"name":"Sample Account"}

Kun esimerkiksi seuraava tilientiteettijoukkoon julkaistu pyynnön perusteksti luo yhteensä neljä uutta entiteettiä, mukaan lukien tilin, tilin luonnin yhteydessä.

  • Yhteyshenkilö luodaan, koska se on määritetty yksiarvoisen primarycontactid-siirtymisominaisuuden objektiominaisuudeksi.
  • Mahdollisuus luodaan, koska se on määritetty matriisissa objektiksi, jonka arvoksi on määritetty kokoelma-arvoinen opportunity_customer_accounts-siirtymisominaisuus.
  • Tehtävä luodaan, koska se on määritetty matriisissa objektiksi, jonka arvoksi on määritetty kokoelma-arvoinen Opportunity_Tasks-siirtymisominaisuus.
{
 "name": "Sample Account",
 "primarycontactid":
 {
     "firstname": "Alton",
     "lastname": "Stott"
 },
 "opportunity_customer_accounts":
 [
  {
      "name": "Opportunity associated to Sample Account",
      "Opportunity_Tasks":
      [
       { "subject": "Task associated to opportunity" }
      ]
  }
 ]
}

Entiteettitietueiden liittäminen luonnin yhteydessä

Toiminto Tapa URI JSON-näyte
Entiteettitietueiden liittäminen luonnin yhteydessä VIESTI [Portaalin URI]/_api/accounts {"name":"Sample Account","primarycontactid@odata.bind":"/contacts(00000000-0000-0000-0000-000000000001)"}

Esimerkki-JSON huomautuksen luontiin verkko-ohjelmointirajapinnan avulla.

{
    "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 sisältää liitteen base64-merkkijonona.

Entiteettien päivittäminen ja poistaminen verkko-ohjelmointirajapinnan avulla

Peruspäivitys

Toiminto Menetelmä URI JSON-näyte
Peruspäivitys PATCH [Portaalin 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 }

Yksittäisen ominaisuuden arvon päivittäminen

Toiminto Tapa URI JSON-näyte
Yksittäisen ominaisuuden arvon päivittäminen PUT [Portaalin URI]/_api/accounts(00000000-0000-0000-0000-000000000001)/name {"value": "Updated Sample Account Name"}

Yksittäisen ominaisuuden arvon poistaminen

Toiminto Tapa URI
Yksittäisen ominaisuuden arvon poistaminen DEL [Portaalin URI]/_api/accounts(00000000-0000-0000-0000-000000000001)/description

Peruspoisto

Toiminto Tapa URI
Peruspoisto DEL [Portaalin URI]/_api/accounts(00000000-0000-0000-0000-000000000001)

Entiteettien liittäminen ja liitosten poistaminen verkko-ohjelmointirajapinnan avulla

Viittauksen lisääminen kokoelma-arvoiseen siirtymisominaisuuteen

Toiminto Tapa URI JSON-näyte
Viittauksen lisääminen kokoelma-arvoiseen siirtymisominaisuuteen Viesti [Portaalin URI]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref {"@odata.id":"[Portal URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)"}

Entiteettiviittauksen poistaminen

Toiminto Tapa URI
Entiteettiviittauksen poistaminen DEL [Portaalin URI]/_api/accounts(00000000-0000-0000-0000-000000000002)/opportunity_customer_accounts/$ref?$id=[Portaalin URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)

Yksiarvoisen siirtymisominaisuuden entiteettiviittauksen poistaminen

Poista yksiarvoisessa siirtymisominaisuudessa $id-kyselymerkkijonon parametri.

Toiminto Tapa URI
Yksiarvoisen siirtymisominaisuuden entiteettiviittauksen poistaminen DEL [Portaalin URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref

Viittauksen muuttaminen yksiarvoisessa siirtymisominaisuudessa

Toiminto Tapa URI JSON-näyte
Viittauksen muuttaminen yksiarvoisessa siirtymisominaisuudessa PUT [Portaalin URI]/_api/opportunities(00000000-0000-0000-0000-000000000001)/customerid_account/$ref {"@odata.id":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"}

Entiteettien liittäminen luonnin yhteydessä

Suhteita sisältäviä uusia entiteettejä voidaan luoda käyttämällä tarkkaa lisäystä.

Entiteettien liittäminen päivityksen yhteydessä käyttämällä yksiarvoista siirtymisominaisuutta

Entiteettejä voi liittää päivityksen yhteydessä käyttämällä samaa sanomaa, joka on kuvattu aiemmin tässä ohjeaiheessa kohdassa Peruspäivitys, mutta yksiarvoisen siirtymisominaisuuden arvo on määritettävä @odata.bind-huomautuksella. Seuraava esimerkki vaihtaa mahdollisuuteen liitetyn tilin käyttämällä yksiarvoista customerid_account-siirtymisominaisuutta.

Entiteettien liittäminen päivityksen yhteydessä käyttämällä yksiarvoista siirtymisominaisuutta

Toiminto Menetelmä URI JSON-näyte
Entiteettien liittäminen päivityksen yhteydessä käyttämällä yksiarvoista siirtymisominaisuutta PATCH [Portaalin URI]/_api/opportunities(00000000-0000-0000-0000-000000000001) {"customerid_account@odata.bind":"[Portal URI]/_api/accounts(00000000-0000-0000-0000-000000000002)"}

Verkko-ohjelmointirajapinnan AJAX-esimerkit

Tässä esimerkki näyttää, miten entiteettitietueita luodaan, päivitetään ja poistetaan AJAX (Asynchronous JavaScript and XML) -tekniikoilla.

Paketoijan AJAX-toiminto

    (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)

Luo

    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 entity 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-näppäin

    webapi.safeAjax({
        type: "DELETE",
        url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
        contentType: "application/json",
        success: function (res) {
            console.log(res);
        }
  });

Esimerkiksi

Tässä esimerkissä esimerkkikomentosarjan avulla näytetään, muokataan, luodaan ja poistetaan yhteyshenkilöitä käyttämällä seuraavia kenttiä: firstname,lastname, fullname, emailaddress1 ja telephone1.

Voit muuttaa kenttien nimiä tai käyttää jotain muuta entiteettiä, kunhan noudatat tämän esimerkin vaiheita.

Vaihe 1 – Sivuston asetusten luominen

Portaalien verkko-ohjelmointirajapintaa ei voi käyttää, ennen kuin tarvittavat sivuston asetukset on otettu käyttöön portaalin hallintasovelluksessa. Sivuston asetukset määräytyvät sen entiteetin mukaan, jota haluat käyttää verkko-ohjelmointirajapinnan kanssa.

  1. Siirry Power Appsen.

  2. Valitse vasemmassa ruudussa Sovellukset.

  3. Valitse Portaalin hallinta -sovellus.

    Portaalin hallintasovellus

  4. Valitse Portaalin hallinta -sovelluksen vasemmassa ruudussa Sivuston asetukset.

    Sivuston asetukset

  5. Valitse Uusi.

  6. Kirjoita Nimi-ruutuun Webapi/contact/enabled.

  7. Valitse sivustotietue Sivusto-luettelossa.

  8. Kirjoita Arvo-ruutuun true.

    Verkko-ohjelmointirajapinnan yhteyshenkilön käyttöön ottamisen asetus

  9. Valitse Tallenna ja sulje.

  10. Valitse Uusi.

  11. Kirjoita Nimi-ruutuun Webapi/contact/fields.

  12. Valitse sivustotietue Sivusto-luettelossa.

  13. Kirjoita Arvo-ruutuun
    firstname,lastname,fullname,emailaddress1,telephone1

    Verkko-ohjelmointirapapinnan yhteyshenkilökentät

  14. Valitse Tallenna ja sulje.

  15. Valitse Uusi.

  16. Kirjoita Nimi-ruutuun Webapi/error/innererror.

  17. Valitse sivustotietue Sivusto-luettelossa.

  18. Kirjoita Arvo-ruutuun true.

    Verkko-ohjelmointirajapinnan virhe

  19. Valitse Tallenna ja sulje.

  20. Tarkista verkko-ohjelmointirajan sivuston asetukset.

    Verkko-ohjelmointirajapinnan sivuston asetukset

Vaihe 2 – Oikeuksien määrittäminen

Oikeudet on määritettävä siten, että käyttäjät voivat käyttää verkko-ohjelmointirajapintatoimintoa. Tässä esimerkissä otetaan käyttöön yhteyshenkilöentiteetin entiteettioikeudet, luodaan verkkorooli verkko-ohjelmointirajapinnan käyttöä varten, lisätään yhteyshenkilöentiteetille tämän verkkoroolin entiteettioikeudet ja lisätään sitten verkkorooli käyttäjille, jotta he voivat käyttää verkko-ohjelmointirajapintaa.

  1. Valitse Portaalin hallinta -sovelluksen vasemmassa ruudussa Entiteettioikeudet.

  2. Valitse Uusi.

  3. Kirjoita Nimi-ruutuun Yhteyshenkilöentiteetin oikeus.

  4. Valitse Entiteetin nimi -luettelossa Yhteyshenkilö (contact).

  5. Valitse sivustotietue Sivusto-luettelossa.

  6. Valitse Laajuus-luettelossa Yleinen.

  7. Valitse luku-, kirjoitus-, luonti- ja poisto-oikeudet.

  8. Valitse Tallenna ja sulje.

    Entiteetin oikeudet

  9. Valitse vasemmassa ruudussa Verkkoroolit.

  10. Valitse Uusi.

  11. Kirjoita Nimi-ruutuun Verkko-ohjelmointirajapinnan käyttäjä.

  12. Valitse sivustotietue Sivusto-luettelossa.

  13. Valitse Todennettujen käyttäjien rooli -kohdassa Kyllä.

    Verkkorooli

  14. Valitse Tallenna.

  15. Valitse Liittyvät > Entiteetin oikeudet.

    Liittyvät entiteetin oikeudet

  16. Valitse Lisää aiemmin luodun entiteetin oikeus.

  17. Valitse aiemmin luotu Yhteyshenkilöentiteetin oikeus.

  18. Valitse Lisää.

    Yhteyshenkilön entiteettioikeuden lisääminen verkko-ohjelmointirajapinnan käyttäjän verkkorooliin

  19. Valitse Tallenna ja sulje.

    Verkko-ohjelmointirajapinnan käyttäjän verkkoroolin entiteettioikeudet

  20. Valitse vasemmassa ruudussa Yhteyshenkilöt.

  21. Valitse yhteyshenkilö, jota haluat käyttää tässä esimerkissä verkko-ohjelmointirajapintaa varten.

    Huomautus

    Tämä yhteyshenkilö on käyttäjätili, jota käytetään tässä esimerkissä verkko-ohjelmointirajapinnan testaamiseen. Varmista, että valitset portaalissa oikean yhteyshenkilön.

  22. Valitse Liittyvät > Verkkoroolit.

    Käyttäjän verkkoroolit

  23. Valitse Lisää aiemmin luotu verkkorooli.

  24. Valitse aiemmin luotu Verkko-ohjelmointirajapinnan käyttäjä -rooli.

  25. Valitse Lisää.

    Käyttäjälle lisätty verkkorooli

  26. Valitse Tallenna ja sulje.

Vaihe 3 – Sivuston luominen

Verkko-ohjelmointirajapinta on nyt otettu käyttöön ja käyttäjän oikeudet on määritetty. Seuraavaksi luodaan verkkosivu, jonka mallikoodilla voi näyttää, muokata, luoda ja poistaa tietueita.

  1. Valitse Portaalin hallinta -sovelluksen vasemmassa ruudussa Verkkosivut.

  2. Valitse Uusi.

  3. Kirjoita Nimi-ruutuun webapi.

  4. Valitse sivustotietue Sivusto-luettelossa.

  5. Valitse Ylätason sivu -kohdassa Aloitus.

  6. Anna Osittainen URL-osoite -kohdassa webapi.

  7. Valitse Sivumalli-kohdassa Aloitus.

  8. Valitse Julkaisutila-kohdassa Julkaistu.

  9. Valitse Tallenna.

    WWW-sivu

  10. Valitse Liittyvät > Verkkosivut.

    Liittyvät verkkosivut

  11. Valitse Verkkosivuun liitetyssä näkymässä webapi.

    Verkkosivun liitetty näkymä

  12. Vieritä Sisältö-osaan ja valitse sitten Kopioi (HTML) (HTML-suunnitteluohjelma).

    HTML-suunnitteluohjelma

  13. Valitse HTML-välilehti.

    HTML-välilehden valinta

  14. Kopioi seuraava esimerkkikoodikatkelma ja liitä se HTML-suunnitteluohjelmaan.

        <!-- Sample code for Web API demonstration -->
    <style>
        #processingMsg {
            width: 150px;
            text-align: center;
            padding: 6px 10px;
            z-index: 9999;
            top: 0;
            left: 40%;
            position: fixed;
            -webkit-border-radius: 0 0 2px 2px;
            border-radius: 0 0 2px 2px;
            -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
            display: none;
        }
    
        table td[data-attribute] .glyphicon-pencil {
            margin-left: 5px;
            opacity: 0;
        }
    
        table td[data-attribute]:hover .glyphicon-pencil {
            opacity: 0.7;
        }
    </style>
    {% fetchxml contactList %}
    <fetch version="1.0" mapping="logical">
        <entity name="contact">
            <attribute name="fullname"></attribute>
            <attribute name="firstname"></attribute>
            <attribute name="lastname"></attribute>
            <attribute name="contactid"></attribute>
            <attribute name="emailaddress1"></attribute>
            <attribute name="telephone1"></attribute>
            <order attribute="contactid" descending="false"></order>
        </entity>
    </fetch>
    {% endfetchxml %}
    <script>
        //Add the contact data in json object
        var contactList = [
            {% for entity in contactList.results.entities %}
        {
            id: "{{entity.contactid}}",
                fullname: "{{entity.fullname}}",
                    firstname: "{{ entity.firstname }}",
                        lastname: "{{ entity.lastname }}",
                            emailaddress1: "{{ entity.emailaddress1 }}",
                                telephone1: "{{ entity.telephone1 }}"
        } {% unless forloop.last %}, {% endunless %}
        {% endfor %}  
    ];
        $(function () {
            //Web API ajax wrapper
            (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)
            // Notification component
            var notificationMsg = (function () {
                var $processingMsgEl = $('#processingMsg'),
                    _msg = 'Processing...',
                    _stack = 0,
                    _endTimeout;
                return {
                    show: function (msg) {
                        $processingMsgEl.text(msg || _msg);
                        if (_stack === 0) {
                            clearTimeout(_endTimeout);
                            $processingMsgEl.show();
                        }
                        _stack++;
                    },
                    hide: function () {
                        _stack--;
                        if (_stack <= 0) {
                            _stack = 0;
                            clearTimeout(_endTimeout);
                            _endTimeout = setTimeout(function () {
                                $processingMsgEl.hide();
                            }, 500);
                        }
                    }
                }
            })();
            // Inline editable table component
            var webAPIExampleTable = (function () {
                var trTpl = '<% _.forEach(data, function(data){ %>' +
                    '<tr data-id="<%=data.id%>" data-name="<%=data.fullname%>">' +
                    '<% _.forEach(columns, function(col){ %>' +
                    '<td data-attribute="<%=col.name%>" data-label="<%=col.label%>" data-value="<%=data[col.name]%>">' +
                    '<%-data[col.name]%><i class="glyphicon glyphicon-pencil"></i>' +
                    '</td>' +
                    '<% }) %>' +
                    '<td>' +
                    '<button class="btn btn-default delete" type="submit"><i class="glyphicon glyphicon-trash" aria-hidden="true"></i></button>' +
                    '</td>' +
                    '</tr>' +
                    '<% }) %>';
                var tableTpl = '<table class="table table-hover">' +
                    '<thead>' +
                    '<tr>' +
                    '<% _.forEach(columns, function(col){ %>' +
                    '<th><%=col.label%></th>' +
                    '<% }) %>' +
                    '<th>' +
                    '<button class="btn btn-default add" type="submit">' +
                    '<i class="glyphicon glyphicon-plus" aria-hidden="true"></i> Add Sample Record' +
                    '</button>' +
                    '</th>' +
                    '</tr>' +
                    '</thead>' +
                    '<tbody>' + trTpl + '</tbody>' +
                    '</table>';
                function getDataObject(rowEl) {
                    var $rowEl = $(rowEl),
                        attrObj = {
                            id: $rowEl.attr('data-id'),
                            name: $rowEl.attr('data-name')
                        };
                    $rowEl.find('td').each(function (i, el) {
                        var $el = $(el),
                            key = $el.attr('data-attribute');
                        if (key) {
                            attrObj[key] = $el.attr('data-value');
                        }
                    })
                    return attrObj;
                }
                function bindRowEvents(tr, config) {
                    var $row = $(tr),
                        $deleteButton = $row.find('button.delete'),
                        dataObj = getDataObject($row);
                    $.each(config.columns, function (i, col) {
                        var $el = $row.find('td[data-attribute="' + col.name + '"]');
                        $el.on('click', $.proxy(col.handler, $el, col, dataObj));
                    });
                    //User can delete record using this button
                    $deleteButton.on('click', $.proxy(config.deleteHandler, $row, dataObj));
                }
                function bindTableEvents($table, config) {
                    $table.find('tbody tr').each(function (i, tr) {
                        bindRowEvents(tr, config);
                    });
                    $table.find('thead button.add').on('click', $.proxy(config.addHandler, $table));
                }
                return function (config) {
                    var me = this,
                        columns = config.columns,
                        data = config.data,
                        addHandler = config.addHandler,
                        deleteHandler = config.deleteHandler,
                        $table;
                    me.render = function (el) {
                        $table = $(el).html(_.template(tableTpl)({ columns: columns, data: data })).find('table');
                        bindTableEvents($table, { columns: columns, addHandler: addHandler, deleteHandler: deleteHandler });
                    }
                    me.addRecord = function (record) {
                        $table.find('tbody tr:first').before(_.template(trTpl)({ columns: columns, data: [record] }));
                        bindRowEvents($table.find('tbody tr:first'), config);
                    }
                    me.updateRecord = function (attributeName, newValue, record) {
                        $table.find('tr[data-id="' + record.id + '"] td[data-attribute="' + attributeName + '"]').text(newValue);
                    }
                    me.removeRecord = function (record) {
                        $table.find('tr[data-id="' + record.id + '"]').fadeTo("slow", 0.7, function () {
                            $(this).remove();
                        });
                    }
                };
            })();
            //Applicaton ajax wrapper 
            function appAjax(processingMsg, ajaxOptions) {
                notificationMsg.show(processingMsg);
                return webapi.safeAjax(ajaxOptions)
                    .fail(function (response) {
                        if (response.responseJSON) {
                            alert("Error: " + response.responseJSON.error.message)
                        } else {
                            alert("Error: Web API is not available... ")
                        }
                    }).always(notificationMsg.hide);
            }
            function addSampleRecord() {
                //Sample data to create a record - change as appropriate
                var recordObj = {
                    firstname: "Willie",
                    lastname: "Huff" + _.random(100, 999),
                    emailaddress1: "Willie.Huff@contoso.com",
                    telephone1: "555-123-4567"
                };
                appAjax('Adding...', {
                    type: "POST",
                    url: "/_api/contacts",
                    contentType: "application/json",
                    data: JSON.stringify(recordObj),
                    success: function (res, status, xhr) {
                        recordObj.id = xhr.getResponseHeader("entityid");
                        recordObj.fullname = recordObj.firstname + " " + recordObj.lastname;
                        table.addRecord(recordObj);
                    }
                });
                return false;
            }
            function deleteRecord(recordObj) {
                var response = confirm("Are you sure, you want to delete \"" + recordObj.name + "\" ?");
                if (response == true) {
                    appAjax('Deleting...', {
                        type: "DELETE",
                        url: "/_api/contacts(" + recordObj.id + ")",
                        contentType: "application/json",
                        success: function (res) {
                            table.removeRecord(recordObj);
                        }
                    });
                }
                return false;
            }
            function updateRecordAttribute(col, recordObj) {
                var attributeName = col.name,
                    value = recordObj[attributeName],
                    newValue = prompt("Please enter \"" + col.label + "\"", value);
                if (newValue != null && newValue !== value) {
                    appAjax('Updating...', {
                        type: "PUT",
                        url: "/_api/contacts(" + recordObj.id + ")/" + attributeName,
                        contentType: "application/json",
                        data: JSON.stringify({
                            "value": newValue
                        }),
                        success: function (res) {
                            table.updateRecord(attributeName, newValue, recordObj);
                        }
                    });
                }
                return false;
            }
            var table = new webAPIExampleTable({
                columns: [{
                    name: 'firstname',
                    label: 'First Name',
                    handler: updateRecordAttribute
                }, {
                    name: 'lastname',
                    label: 'Last Name',
                    handler: updateRecordAttribute
                }, {
                    name: 'emailaddress1',
                    label: 'Email',
                    handler: updateRecordAttribute
                }, {
                    name: 'telephone1',
                    label: 'Telephone',
                    handler: updateRecordAttribute
                }],
                data: contactList,
                addHandler: addSampleRecord,
                deleteHandler: deleteRecord
            });
            table.render($('#dataTable'));
        });
    </script>
    <div id="processingMsg" class="alert alert-warning" role="alert"></div>
    <div id="dataTable"></div>
    

    Koodin kopiointi ja liittäminen

  15. Valitse Tallenna ja sulje.

Vaihe 4 – Portaalien välimuistin tyhjentäminen

Olet luonut webapi-näytesivun verkko-ohjelmointirajapintatoiminnon testaamista varten. Varmista ennen aloittamista, että Power Apps -portaalien välimuisti on tyhjennetty, jotta portaalin hallintasovelluksessa tehdyt muutokset näkyvät myös portaalissa.

Tärkeä

Portaalin palvelinpuolen välimuistin tyhjentäminen aiheuttaa väliaikaisesti verkkoportaalin toiminnan heikkenemistä samalla, kun tiedot ladataan Common Data Servicestä.

Välimuistin tyhjentäminen:

  1. Kirjaudu portaaliin Järjestelmänvalvojat-verkkoroolin jäsenenä.

  2. Muuta URL-osoitetta liittämällä sen loppuun /_services/about. Jos portaalin URL-osoite on esimerkiksi https://contoso.powerappsportals.com, muuta se muotoon https://contoso.powerappsportals.com/_services/about.

    Portaalipalvelun Tietoja-sivu

    Huomautus

    Välimuistin tyhjentäjän on oltava Järjestelmänvalvojat-verkkoroolin jäsen. Jos näyttö on tyhjä, tarkista verkkoroolimääritykset.

  3. Valitse Tyhjennä välimuisti.

Lisätietoja: Portaalin palvelinpuolen välimuistin tyhjentäminen

Vaihe 5 – Näyttäminen, muokkaaminen, luominen ja poistaminen verkko-ohjelmointirajapinnan avulla

Tässä esimerkissä aiemmin luotu esimerkkisivu, jonka URL-osoite on webapi, on nyt valmis testattavaksi.

Verkko-ohjelmointirajapintatoiminnon testaaminen:

  1. Kirjaudu portaalin sillä käyttäjätilillä, jolle määritettiin aiemmin luotu Verkko-ohjelmointirajapinnan käyttäjä -rooli.

  2. Siirry aiemmin luodulle webapi-verkkosivulle. Esimerkki: https://contoso.powerappsportals.com/webapi.

    Webapi-esimerkkverkkosivu

  3. Lisää näytetietue komentosarjasta valitsemalla Lisää näytetietue.

  4. Valitse kenttä. Tässä esimerkissä on valittu Sähköposti ja tarkoitus on vaihtaa yhteyshenkilön sähköpostiosoite.

    Muokkaa sähköpostia

  5. Poista tietue valitsemalla Poista tietue.

Nyt kun tässä esimerkissä on luotu näytteen sisältävä verkkosivu, jonka tietueita voi näyttää, muokata, luoda ja poistaa, voit mukauttaa lomakkeita ja asettelua.

Seuraava vaihe

HTTP-pyyntöjen laatiminen ja virheiden käsitteleminen

Katso myös

Verkko-ohjelmointirajapinnan yleiskatsaus