Partajați prin


Utilizarea API-ului web pentru portal

În acest ghid, veți configura o pagină web și un șablon web personalizat care va folosi API-ul web pentru a citi, scrie, actualiza și șterge înregistrările din tabelul de persoane de contact.

Notă

Puteți schimba numele coloanei sau puteți utiliza un alt tabel în timp ce urmați pașii din acest exemplu.

Pasul 1. Creare setări de site

Înainte de a putea utiliza portalul Web API, trebuie să activați setările de site necesare cu aplicația Portal Management. Setările site-ului depind de tabelul pe care doriți să îl utilizați atunci când interacționați cu API-ul web.

  1. Porniți aplicația Gestionare portal.

  2. În aplicația Management portal din panoul din stânga, selectați Setări site.

    Deschideți setări site în aplicația Gestionarea portalului

  3. Selectați Nou.

  4. În caseta Nume, introducețiWebapi/contact/activat.

  5. În lista Site web, selectați înregistrarea site-ului web.

  6. În caseta Valoare, introduceți adevărat.

    Activați tabelul de contacte pentru setarea site-ului WebAPI.

  7. Selectați Salvați & Aproape.

  8. Selectați Nou.

  9. În caseta Nume, introducețiWebapi/contact/câmpuri.

  10. În lista Site web, selectați înregistrarea site-ului web.

  11. În caseta Valoare, Introduceți
    prenume, prenume, nume complet, adresă de e-mail1, telefon1

    Activați tabelul de contacte a câmpurilor pentru setarea site-ului WebAPI.

  12. Selectați Salvați & Aproape.

  13. Selectați Nou.

  14. În caseta Nume, introducețiWebapi/eroare/innererror.

    Activați setarea site-ului de eroare internă a API-ului web.

  15. În lista Site web, selectați înregistrarea site-ului web.

  16. În caseta Valoare, introduceți adevărat.

  17. Selectați Salvați & Aproape.

  18. Verificați setările site-ului pentru API-ul Web.

Pasul 2. Configurați permisiunile

Va trebui să configurați permisiunile astfel încât utilizatorii să poată utiliza caracteristica API Web. În acest exemplu, veți configura sau crea un nou rol web care va utiliza API-ul web, apoi veți adăuga permisiunile de tabel pt. tabelul Persoane de contact și veți asocia permisiunea de tabel la rolul web, iar la final veți atribui rolul web la utilizatori pentru a le permite să utilizeze API-ul web.

Notă

API-ul web urmează permisiunile de tabel care provin din contextul rolului web al utilizatorului autentificat sau al rolului web anonim. Luați în considerare dacă utilizatorii dvs. au deja un rol web care are acces la tabelele specifice din site-ul dvs. web necesare API-ului web. Nu trebuie să creați roluri web suplimentare doar pentru a utiliza API-ul web.

Pentru a crea un rol web

Dacă în prezent nu aveți un rol web cu permisiuni pentru tabelul pe care îl accesați prin API-ul web sau aveți nevoie de un context diferit de accesare a datelor, urmați pașii de mai jos pentru a afla cum să creați un nou rol web și să atribuiți permisiuni pentru tabel.

  1. Porniți aplicația Gestionare portal.

  2. În panoul din stânga, în secțiunea Securitate, selectați Roluri web.

  3. Selectați Nou.

  4. În caseta Nume, introduceți Utilizator Web API (sau orice nume care reflectă cel mai bine rolul utilizatorului care accesează această funcționalitate).

  5. În lista Site web, selectați înregistrarea site-ului web.

    Adăugați roluri web al utilizatorului API web

  6. Selectați Salvați.

Creați permisiunile pentru tabel

  1. Lansați studioul de design Power Pages.

  2. Selectați Securitate spațiul de lucru.

  3. În secțiunea proteja , selectați Permisiuni pentru tabel.

  4. Selectați Permisiune nouă.

  5. În caseta Nume, introduceți Permisiunea pentru tabelul de persoane de contact.

  6. În lista Nume tabel, selectați Persoană de contact (persoană de contact).

  7. În lista Tip de acces, selectați Global.

  8. Selectați privilegiile Citire, SCriere, Creare și Ștergere.

  9. Selectați + Adăugați roluri și selectați rolul web pe care l-ați selectat sau creat mai devreme.

  10. Selectați Salvați & Aproape.

    Permisiuni tabel de persoane de contact

Adăugați persoane de contact la rolul web

  1. Porniți aplicația Gestionare portal.

  2. În panoul din stânga, în secțiunea Securitate, selectați Persoane de contact.

  3. Selectaţi un contact pe care doriţi să îl utilizaţi în exemplu pentru API Web.

    Notă

    Acest contact este contul de utilizator utilizat în acest exemplu pentru testarea API-ului Web. Asigurați-vă că ați selectat contactul corect în portalul dvs.

  4. Selectați Corelat>Roluri web.

    Selectați roluri web corelate.

  5. Selectați Adăugați un rol web existent.

  6. Selectați rolul Utilizator API Web, creat mai devreme.

  7. Selectați Adăugare.

    Vizualizare asociată rolului web.

  8. Selectați Salvați & Aproape.

Pasul 3. Creați o pagină web

Acum, după ce ați activat API-ul web și ați configurat permisiunile utilizatorilor, creați o pagină web cu un exemplu de cod pentru a vizualiza, edita, crea și șterge înregistrări.

  1. Lansați studioul de design Power Pages.

  2. În spațiul de lucru Pagini, selectați + Pagină.

  3. În caseta de dialog Adăugați o pagină,

  4. În caseta Nume, introduceți WebAPI și selectați aspectul Începere de la zero.

  5. Selectați Adăugare.

  6. Selectați opțiunea Editați codul din colțul din dreapta sus.

  7. Selectați Deschideți Visual Studio Code.

  8. Copiați următorul fragment de cod exemplu și inserați-l între etichetele <div></div> din secțiunea paginii.

        <!-- 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>
    
    <script>
      $(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,
              addHandler = config.addHandler,
              deleteHandler = config.deleteHandler,
              $table;
            me.render = function(el) {
              $table = $(el).html(_.template(tableTpl)({
                columns: columns,
                data: me.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 loadRecords() {
          return appAjax('Loading...', {
            type: "GET",
            url: "/_api/contacts?$select=fullname,firstname,lastname,emailaddress1,telephone1",
            contentType: "application/json"
          });
        }
        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: [],
          addHandler: addSampleRecord,
          deleteHandler: deleteRecord
        });
        loadRecords().done(function(data) {
          table.data = _.map(data.value, function(record){
            record.id = record.contactid;
            return record;
          });
          table.render($('#dataTable'));
        });
      });
    </script>
    <div id="processingMsg" class="alert alert-warning" role="alert"></div>
    <div id="dataTable"></div>
    

    Inserați codul.

  9. Selectați CTRL-S pentru a salva codul.

  10. În studioul de design, selectați Sincronizare pentru a actualiza site-ul cu modificările de cod.

Pasul 4. Utilizați API-ul Web pentru a citi, vizualiza, edita, crea și șterge

Pentru a testa funcționalitatea API web:

  1. Selectați Previzualizare, apoi alegeți Desktop.

  2. Conectați-vă la site-ul dvs. cu contul de utilizator căruia i-a fost atribuit rolul Utilizator API web pe care l-ați creat mai devreme.

  3. Accesați pagina web WebApi creată mai devreme.

    Exemplu de pagină webapi.

  4. Selectați Adăugați eșantion de înregistrare pentru a adăuga eșantionul de înregistrare din script.

  5. Selectați un câmp. În acest exemplu, am selectat E-mail pentru a schimba adresa de e-mail a unui contact.

    Editați e-mailul

  6. Pentru a șterge o înregistrare, selectați pictograma Ștergere.

Acum că ați creat o pagină web cu un eșantion în acest exemplu pentru a citi, vizualiza, edita, crea și șterge înregistrări, puteți particulariza formularele și aspectul.

Următorul pas

Compuneți cereri HTTP și gestionați erorile

Consultați și