Бележка
Достъпът до тази страница изисква удостоверяване. Можете да опитате да влезете или да промените директориите.
Достъпът до тази страница изисква удостоверяване. Можете да опитате да промените директориите.
Взаимодействието с уеб API включва съставяне на HTTP заявки с необходимите заглавки и обработка на HTTP отговори, включително всякакви грешки.
Важно
- Вашата версия на портала трябва да е 9.3.3.x или по-нова, за да работи тази функция.
URL адрес на уеб API и версия
Конструирайте URL адреса на уеб API, като използвате формата в следващата таблица.
| Част | Описание |
|---|---|
| Протокол | https:// |
| Базов URL адрес | <URL адрес на портала> |
| Път за уеб API | _api |
| Ресурс | Логическо име на таблицата, която искате да използвате |
Например използвайте този формат, когато посочвате случай:
https://contoso.powerappsportals.com/_api/case
Всички ресурси на уеб API ще следват съответните разрешения за таблица в контекста на уеб ролите.
HTTP методи
HTTP заявките могат да използват различни видове методи. Уеб API на портали обаче поддържа само методите в следната таблица:
| Метод | Използване |
|---|---|
| Get | Използвайте при извличане на данни от таблици. |
| Post | Използвайте при създаване на записи. |
| Patch | Използвайте при актуализиране на таблици или извършване на операции с upsert. |
| Delete | Използвайте при изтриване на записи или стойности на отделни полета на записи. |
| Put | Използвайте в ограничен брой ситуации за актуализиране на отделни полета на записи. |
HTTP заглавки
Уеб API поддържа само JSON. Всяка HTTP заглавка трябва да включва:
- Стойност на заглавка Приемане на application/json дори когато не се очаква основен текст на отговор.
- Ако заявката включва JSON данни в основния си текст, трябва да включите заглавка от тип съдържание със стойност
application/json.
Настоящата версия на OData е 4.0, но бъдещите версии може да позволят нови възможности. Използвайте следния синтаксис, за да сте сигурни, че няма неяснота относно версията на OData, която ще бъде приложена към вашия код в бъдеще:
Синтаксис
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Пример: Функция Wrapper AJAX за маркера CSRF
(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)
Пример: Извличане на данни от таблица
webapi.safeAjax({
type: "GET",
url: "/_api/contacts?$select=firstname,lastname",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Пример: Създаване на данни на таблица
webapi.safeAjax({
type: "POST",
url: "/_api/accounts",
contentType: "application/json",
data: JSON.stringify({
"name": "Sample Account"
}),
success: function (res, status, xhr) {
console.log("entityID: "+ xhr.getResponseHeader("entityid"))
}
});
Пример: Актуализиране на данни на таблица
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);
}
});
Пример: Изтриване на данни на таблица
webapi.safeAjax({
type: "DELETE",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Идентифициране на кодове на състояние
Всеки отговор на HTTP заявка включва код на състояние. Кодовете на състоянието, върнати от уеб API на порталите, включват следното:
| Код | Описание | Тип |
|---|---|---|
| 200 OK | Очаквайте този отговор, когато операцията ще върне данни в основния текст на отговора. | Успешно |
| 204 Без съдържание | Очаквайте този отговор, когато операцията е успешно, но не връща данни в основния текст на отговора. | Успешно |
| 403 Забранено | Очаквайте този отговор за следните типове грешки:
|
Грешка на клиента |
| 401 Неупълномощено | Очаквайте този отговор за следните типове грешки:
|
Грешка на клиента |
| 413 Полезният обем е прекалено голям | Очаквайте този отговор, когато дължината на заявката е твърде голяма. | Грешка на клиента |
| 400 BadRequest | Очаквайте този отговор, когато аргументът е невалиден. InvalidAttribute |
Грешка на клиента |
| 404 Не е намерено | Очаквайте този отговор, когато ресурсът не съществува. Таблицата не е показана за уеб API. |
Грешка на клиент |
| 405 Методът не е разрешен | Тази грешка възниква при неправилни комбинации от методи и ресурси. Например не можете да използвате ИЗТРИВАНЕ или КОРЕКЦИЯ за колекция от таблици. Тази ситуация може да се случи за следните типове грешки:
|
Грешка на клиента |
| 501 Не е реализирано | Очаквайте този отговор, когато някоя заявена операция не е изпълнена. | Грешка в сървъра |
| 503 Услугата е недостъпна | Очаквайте този отговор, когато услугата за уеб API не е налична. | Грешка в сървъра |
Анализиране на грешки от отговора
Обмислете следния примерен HTTP отговор, който все пак включва вътрешната грешка:
{
"error":{
"code": "This code is not related to the http status code and is frequently empty",
"message": "A message describing the error",
"cdscode": "Dataverse error code",
"innererror": {
"code": "800xxxx",
"message": "A message describing the error. This is frequently the same as the outer message.."
}
}
}
Кодове на грешки
Кодовете за грешки се показват в шестнадесетичен формат за всички обработени сценарии. Следващата таблица изброява всеки код за грешка със съответното име и съобщение.
| Код на грешка | Име на грешката | Съобщение за грешка |
|---|---|---|
| 900400FF | NoAttributesForTableCreate | Няма атрибути за действие „Създаване на таблица”. |
| 90040100 | InvalidAttribute | Атрибутът {0} не може да бъде намерен за таблица {1}. |
| 90040101 | AttributePermissionIsMissing | Атрибут {0} в таблица {1} не е активиран за Web Api. |
| 90040102 | TablePermissionWriteIsMissingDuringUpdate | Нямате разрешение да актуализирате обект {0}. |
| 90040103 | TablePermissionCreateIsMissing | Нямате разрешение да създавате обект {0}. |
| 90040104 | TablePermissionDeleteIsMissing | Нямате разрешение да изтривате обект {0}. |
| 90040105 | TablePermissionAppendIsMissngDuringAssociationChange | Нямате разрешение за асоцииране или разделяне на таблица {0} с {1}. |
| 90040106 | TablePermissionAppendToIsMissingDuringAssociationChange | Нямате разрешение за асоцииране или разделяне на таблица {1} към {0} |
| 90040107 | HttpAntiForgeryException | Маркерът за бисквитки срещу фалшификация и маркерът за полето на формуляра не съвпадат. |
| 90040109 | MissingPortalSessionCookie | Невалиден маркер на сесия е подаден в метода на връщане. |
| 9004010C | ResourceDoesNotExists | Ресурсът не е намерен за сегмента „{0}”. |
| 9004010D | CDSError | Възникна грешка на CDS. |
Отговорът за необработени грешки с код на състояние на HTTP 500 ще върне грешката – „При обработката на заявката възникна неочаквана грешка”.