Nola: erabili Web API ataria
Gida honetan, web-orri eta -txantiloi pertsonalizatua konfiguratuko duzu, kontaktuen taulako erregistroak irakurri, idatzi, eguneratu eta ezabatzeko Web-APIa erabiliko duena.
Oharra
Zutabeen izenak alda ditzakezu edo beste taula bat erabil dezakezu, adibide honetako urratsei jarraituz.
1. urratsa. Sprti gune-ezarpenak
Atarien Web APIa erabili aurretik, beharrezko gunearen ezarpenak gaitu behar dituzu Portal Management aplikazioarekin. Webaren ezarpenak Web APIarekin elkarreraginean erabili nahi duzun taularen araberakoak dira.
Portal Management aplikazioaren ezkerreko panelean, hautatu Gunearen ezarpenak.
Hautatu Berria.
Izena kutxa, sartu Webapi / kontaktua / gaituta.
Webgunea zerrenda, hautatu zure webgunearen erregistroa.
Hurrengoan Balioa koadroa, idatzi egia.
Gorde eta itxi.
Hautatu Berria.
Izena kutxa, sartu Webapi / kontaktua / eremuak.
Webgunea zerrenda, hautatu zure webgunearen erregistroa.
Hurrengoan Balioa koadroa, idatzi
izen-abizenak, izen-abizenak, helbide elektronikoa1, telefonoa1Gorde eta itxi.
Hautatu Berria.
Izena kutxa, sartu Webapi / errorea/innererror.
Webgunea zerrenda, hautatu zure webgunearen erregistroa.
Hurrengoan Balioa koadroa, idatzi egia.
Gorde eta itxi.
Egiaztatu webgunearen ezarpenak Web APIa.
2. urratsa. Konfiguratu baimenak
Baimenak konfiguratu beharko dituzu erabiltzaileek Web API funtzioa erabili ahal izateko. Adibide honetan, web rol berria konfiguratu edo sortu behar baduzu, Web APIa erabiliko duena, taula-baimenak gehituko dituzu hurrengorako Kontaktua taula eta lotu taula-baimenak web rola, eta azkenean esleitu web rola erabiltzaileei ahalbidetzeko Web API erabiltzea.
Oharra
Web APIak taularen baimenak taula-baimenak hurrengotik datorrena web-rola testuingurua autentifikatutako erabiltzaile edo web rol anonimoa. Kontuan izan zure erabiltzaileek Web APIak behar dituen zure webguneko taula espezifikoetarako sarbidea duen web-rol bat duten dagoeneko. Ez duzu web-rol gehigarririk sortu behar Web APIa erabiltzeko.
Sortu web-funtzioa
Une honetan ez baduzu Web APIaren bidez atzitzen ari zaren taularako baimenik duen web-rol bat edo datuetara sartzeko testuinguru desberdina behar baduzu, hurrengo urratsak web-rol berri bat sortu eta taula-baimenak nola esleitu dezazun.
Ezkerreko panelean Segurtasuna atalean, hautatu Web-funtzioak .
Hautatu Berria.
Izena koadroan, idatzi Web-API erabiltzailea (edo funtzionalitatea atzitzen duen erabiltzailearen funtzioari ondoen dagokion edozein izen).
Webgunea zerrenda, hautatu zure webgunearen erregistroa.
Hautatu Gorde.
Sortu taula-baimenak
Abiarazi Power Pages diseinatu-estudioa.
Hautatu Konfiguratu laneko-arean.
Azpian Segurtasuna sekzioan, hautatu Taula-baimenak.
Hautatu Baimen berria.
Urtean Izena kutxa, sartu Jarri harremanetan mahaiaren baimena.
Urtean Taularen izena zerrenda, hautatu Harremanetarako (kontaktua).
Sarbide mota zerrendan, hautatu Orokorra.
Hautatu Irakurri, Idatzi, Sortu, eta Ezabatu pribilegioak.
Hautatu + Gehitu rolak eta hautatu web rola lehenago hautatu edo sortu duzun.
Gorde eta itxi.
Gehitu kontaktuak web-funtzioan
Ezkerreko panelean Segurtasuna atalean, hautatu Kontaktuak.
Hautatu erabili nahi duzun kontaktu bat adibide honetan Web API-rako.
Oharra
Web APIa probatzeko adibide honetan erabiltzen den erabiltzaile kontua da kontaktu hau. Ziurtatu zure atarian kontaktu zuzena hautatzen duzula.
Hautatu Erlazionatutakoa>Web funtzioak.
Hautatu Gehitu lehendik dagoen web-funtzioa.
Aukeratu Web API erabiltzailea rola, lehenago sortua.
Hautatu Gehitu.
Gorde eta itxi.
3. urratsa. Sortu web-orria
Web APIa gaitu eta erabiltzaileen baimenak konfiguratu dituzunean, sortu web orri bat lagin kodearekin erregistroak ikusi, editatu, sortu eta ezabatzeko.
Abiarazi Power Pages diseinatu-estudioa.
Orriak laneko arean, hautatu + Orria.
Gehitu orria eztabaida,
Izena laukian, sartu WebAPI eta hautatu Hasi hutsetik diseinua.
Hautatu Gehitu.
Hautatu goiko eskuineko izkinan Editatu kodea aukera.
Hautatu Ireki Visual Studio Code.
Kopiatu lagin-kode zati hau eta itsatsi orriaren ataleko
<div></div>
etiketen artean.<!-- 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>
Hautatu KTRL-S kodea gordetzeko.
Diseinu-estudioan, hautatu Sinkronizatu eguneratzeko gunea kode edizioekin.
4. urratsa. Erabili Web-APIa ikusi, editatu, sortu eta ezabatzeko
Web APIaren funtzionalitatea probatzeko:
Aukeratu Aurreargitalpena eta, ondoren, aukeratu Mahaigaina.
Sartu zure gunean esleitutako erabiltzaile kontua erabiliz Web API erabiltzailea lehenago sortu zenuen rola.
Joan WebApi lehenago sortutako web orria.
Aukeratu Gehitu lagin-erregistroa script-aren laginaren erregistroa gehitzeko.
Hautatu eremua. Adibide honetan, hautatu dugu Posta elektronikoa kontaktu baten helbide elektronikoa aldatzeko.
Hautatu Ezabatu ikonoa ezabatzeko erregistroa.
Erregistroak irakurri, editatu, sortu eta ezabatzeko lagin batekin web-orri bat sortu duzunean, inprimakiak eta diseinua pertsonaliza ditzakezu.
Hurrengo urratsa
Sortu HTTP eskaerak eta kudeatu erroreak