Vytvořte požadavky HTTP a zpracujte chyby pro webové rozhraní API portálů
Poznámka
S účinností od 12. října 2022 jsou portály Power Apps Power Pages. Další informace: Služba Microsoft Power Pages je nyní obecně dostupná (blog)
Zanedlouho migrujeme a sloučíme dokumentaci k portálům Power Apps s dokumentací k Power Pages.
Interakce s webovým rozhraním API zahrnuje vytváření požadavků HTTP s požadovanými záhlavími a zpracovávání odpovědí HTTP, včetně veškerých chyb.
Důležité
- Aby tato funkce fungovala, musí být vaše verze portálu 9.3.3.x nebo novější.
Adresa URL webového rozhraní API a správa verzí
Vytvořte adresu URL webového rozhraní API pomocí formátu v následující tabulce.
Část | Description |
---|---|
Protokol | https:// |
Základní adresa URL | <portal URL> |
Cesta webového rozhraní API | _api |
Resource | Logický název tabulky, kterou chcete použít |
Například použijte tento formát, když odkazujete na případ:
https://contoso.powerappsportals.com/_api/case
Všechny prostředky webového rozhraní API se budou řídit příslušnými oprávněními tabulky portálu v kontextu s webovými rolemi.
Metody HTTP
Požadavky HTTP mohou používat různé druhy metod. Webová rozhraní API portálů však podporuji pouze metody v následující tabulce:
Method | Využití |
---|---|
Získat | Použijte při načítání dat z tabulek. |
Zveřejnit | Použijte při vytváření záznamů. |
Oprava | Použijte při aktualizaci tabulek nebo při operacích upsert. |
Odstranění | Použijte při odstraňování záznamů nebo jednotlivých hodnot polí záznamů. |
Put | Použijte v omezených situacích k aktualizaci jednotlivých polí záznamů. |
Záhlaví HTTP
Webové rozhraní API podporuje pouze JSON. Každé záhlaví HTTP musí obsahovat:
- Hodnota záhlaví Přijmout application/json, i když se neočekává žádné tělo odpovědi.
- Pokud text požadavku obsahuje data JSON, musíte zahrnout záhlaví Content-Type s hodnotou
application/json
.
Aktuální verze OData je 4.0, ale budoucí verze mohou umožňovat nové funkce. Použijte následující syntaxi, abyste zajistili, že nebudou žádné nejasnosti ohledně verze OData, která bude v budoucnu použita na váš kód:
Syntaxe
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Příklad: Obálková funkce AJAX pro token 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)
Příklad: Načtení dat tabulky
webapi.safeAjax({
type: "GET",
url: "/_api/contacts?$select=firstname,lastname",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Příklad: Vytvoření dat tabulky
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"))
}
});
Příklad: Aktualizace dat tabulky
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);
}
});
Příklad: Odstranění dat tabulky
webapi.safeAjax({
type: "DELETE",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Vysvětlení stavových kódů
Každá odpověď na požadavek HTTP obsahuje stavový kód. Stavové kódy vrácené webovým rozhraním API portálů zahrnují následující:
Kód | Description | Type |
---|---|---|
200 OK | Očekávejte tuto odpověď, když vaše operace vrátí data v textu odpovědi. | Úspěch |
204 Chybí obsah | Očekávejte tuto odpověď, když vaše operace uspěje, ale nevrátí data v textu odpovědi. | Úspěch |
403 Zakázáno | Očekávejte tuto odpověď u následujících typů chyb:
|
Chyba klienta |
401 Neautorizováno | Očekávejte tuto odpověď u následujících typů chyb:
|
Chyba klienta |
413 Příliš velká datová část | Tuto odpověď očekávejte, pokud je délka požadavku příliš velká. | Chyba klienta |
400 Nepsrávný požadavek | Pokud je argument neplatný, očekávejte tuto odpověď. InvalidAttribute |
Chyba klienta |
404 Nenalezeno | Pokud zdroj neexistuje, očekávejte tuto odpověď. Tabulka není vystavena pro webové rozhraní API. |
Chyba klienta |
405 Nepovolená metoda | K této chybě dochází při nesprávné kombinaci metod a prostředků. Například nemůžete použít DELETE nebo PATCH na kolekci tabulek. Tato situace může nastat u následujících typů chyb:
|
Chyba klienta |
501 Není implementováno | Tuto odpověď očekávejte, pokud není implementována požadovaná operace. | Chyba serveru |
503 Nedostupná služba | Tuto odpověď očekávejte, když služba webového rozhraní API není k dispozici. | Chyba serveru |
Analýza chyb z odpovědi
Zvažte následující příklad odpovědi HTTP, která stále obsahuje vnitřní chybu:
{
"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.."
}
}
}
Kódy chyb
Kódy chyb jsou zobrazeny v hexadecimálním formátu pro všechny zpracované scénáře. V následující tabulce je uveden každý chybový kód s příslušným názvem a zprávou.
Kód chyby | Název chyby | Chybová zpráva |
---|---|---|
900400FF | NoAttributesForTableCreate | Žádné atributy pro akci Vytvořit tabulku |
90040100 | InvalidAttribute | Atribut {0} tabulky {1} nelze najít. |
90040101 | AttributePermissionIsMissing | Atribut {0} v tabulce {1} nemá povolené webové rozhraní API. |
90040102 | TablePermissionWriteIsMissingDuringUpdate | Nemáte oprávnění k aktualizaci entity {0}. |
90040103 | TablePermissionCreateIsMissing | Nemáte oprávnění k vytvoření entity {0}. |
90040104 | TablePermissionDeleteIsMissing | Nemáte oprávnění k odstranění entity {0). |
90040105 | TablePermissionAppendIsMissngDuringAssociationChange | Nemáte oprávnění k přidružení nebo zrušení přidružení tabulky {0} s {1}. |
90040106 | TablePermissionAppendToIsMissingDuringAssociationChange | Nemáte oprávnění k přidružení nebo zrušení přidružení tabulky {1} k {0}. |
90040107 | HttpAntiForgeryException | Token souboru cookie proti padělání a token pole formuláře se neshodují. |
90040109 | MissingPortalSessionCookie | Do metody, která vyvolala chybu, byl předán neplatný token relace. |
9004010C | ResourceDoesNotExists | Pro segment {0} nebyl nalezen zdroj. |
9004010D | CDSError | Došlo k chybě CDS. |
Odpověď na neošetřené chyby se stavovým kódem HTTP 500 vrátí chybu „Při zpracování požadavku došlo k neočekávané chybě“.
Viz také
Přehled webového rozhraní API portálů
Operace portálu pro zápis, aktualizaci a odstranění entit pomocí webového rozhraní API
Operace čtení pomocí webového rozhraní API portálů
Poznámka
Můžete nám sdělit, jaké máte jazykové preference pro dokumentaci? Zúčastněte se krátkého průzkumu. (upozorňujeme, že tento průzkum je v angličtině)
Průzkum bude trvat asi sedm minut. Nejsou shromažďovány žádné osobní údaje (prohlášení o zásadách ochrany osobních údajů).
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro