Sestava zahtev HTTP in obdelava napak za spletni API portalov
Interakcija s spletnim API-jem vključuje sestavljanje zahtev HTTP z obveznimi glavami in obravnavanje odgovorov HTTP, vključno z morebitnimi napakami.
Pomembno
- Za delovanje te funkcije morate imeti portal različice 9.3.3.x ali novejše.
URL spletnega API-ja in shranjevanje različic
Sestavite URL spletnega API-ja z uporabo oblike v naslednji tabeli.
| Del | Opis |
|---|---|
| Protokol | https:// |
| Osnovni URL | <portal URL> |
| Pot spletnega API-ja | _api |
| Vir | Ime tabele, ki jo želite uporabiti |
To obliko zapisa na primer uporabite pri sklicevanju na primer:
https://contoso.powerappsportals.com/_api/case
Vsi viri spletnega API-ja bodo sledili ustreznim dovoljenja za tabelo portala v kontekstu spletnih vlog.
Načini HTTP
Zahteve HTTP lahko uporabljajo različne načine. Vendar spletni API portalov podpira samo metode v naslednji tabeli:
| Metoda | Uporaba |
|---|---|
| Ustvari račun v storitvi Yammer | Uporabite pri pridobivanju podatkov iz tabel. |
| Pošlji | Uporabite pri ustvarjanju tabel in klicanju dejanj. |
| Patch | Uporabite pri posodabljanju tabel ali izvajanju postopkov upsert. |
| Delete | Uporabite pri brisanju tabel ali posameznih lastnosti tabel. |
| Put | Uporabite v omejenih situacijah za posodabljanje posameznih lastnosti tabel. |
Glave HTTP
Spletni API podpira samo JSON. Vsaka HTTP glava mora vsebovati:
- Glava Sprejmi vrednosti application/json, tudi kadar je pričakovati telo brez odziva.
- Če zahteva vključuje podatke JSON v telesu zahteve, morate vključiti glavo Vrsta vsebine z vrednostjo
application/json.
Trenutna različica vira OData je 4.0, vendar bodo prihodnje različice morda omogočale nove zmogljivosti. Uporabite naslednjo sintakso, da zagotovite, da ni dvoumnosti glede različice OData, ki bo uporabljena za vašo kodo v prihodnosti:
Sintaksa
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Primer: Funkcija Wrapper AJAX za žeton 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)
Primer: Pridobite podatke tabele
webapi.safeAjax({
type: "GET",
url: "/_api/contacts?$select=firstname,lastname",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Primer: ustvarjanje podatkov tabel
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"))
}
});
Primer: posodabljanje podatkov tabel
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);
}
});
Primer: brisanje podatkov tabel
webapi.safeAjax({
type: "DELETE",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Prepoznavanje kod stanja
Vsak odgovor na zahtevo HTTP vključuje kodo stanja. Kode stanja, ki jih vrne spletni API portalov, vključujejo naslednje:
| Koda | Description | Vnesi |
|---|---|---|
| 200 V redu | Pričakujte ta odgovor, ko postopek vrne podatke v telesu odziva. | Uspeh |
| 204 Ni vsebine | Pričakujte ta odgovor, ko postopek uspe, vendar ne vrne podatkov v telesu odziva. | Uspeh |
| 403 – Prepovedano | Pričakujte ta odgovor za naslednje vrste napak:
|
Napaka odjemalca |
| 401 – Nedovoljeno | Pričakujte ta odgovor za naslednje vrste napak:
|
Napaka odjemalca |
| 413 Prevelik obseg | Ta odgovor pričakujte, ko je dolžina zahteve prevelika. | Napaka odjemalca |
| 400 Napačna zahteva | Pričakujte ta odgovor, če argument ni veljaven. InvalidAttribute |
Napaka odjemalca |
| 404 Ni mogoče najti | Pričakujte ta odgovor, ko vir ne obstaja. Tabela ni izpostavljena za spletni API. |
Napaka odjemalca |
| 405 Način ni dovoljen | Ta napaka se pojavi pri napačnih kombinacijah metod in virov. Tako na primer za zbirko tabel ne morete uporabiti funkcije DELETE ali PATCH. Do te situacije lahko pride za naslednje vrste napak:
|
Napaka odjemalca |
| 501 Ni uporabljeno | Pričakujte ta odgovor, ko zahtevano dejanje ni izvedeno. | Napaka strežnika |
| 503 – Storitev ni na voljo. | Pričakujte ta odgovor, ko storitev spletnega API-ja ni na voljo. | Napaka strežnika |
Napake razčlenitve iz odgovora
Razmislite o naslednjem primeru odgovora HTTP, ki še vedno vključuje notranjo napako:
{
"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.."
}
}
}
Kode napak
Kode napak so prikazane v šestnajstiški obliki za vse obdelane scenarije. V naslednji tabeli so navedene vse kode napak s pripadajočim imenom in sporočilom.
| Koda napake | Ime napake | Sporočilo o napaki |
|---|---|---|
| 900400FF | NoAttributesForTableCreate | Ni atributov za dejanje Ustvari tabelo. |
| 90040100 | InvalidAttribute | Atributa {0} ni mogoče najti za tabelo {1}. |
| 90040101 | AttributePermissionIsMissing | Atribut {0} v tabeli {1} ni omogočen za spletni API. |
| 90040102 | TablePermissionWriteIsMissingDuringUpdate | Nimate dovoljenja za posodobitev entitete {0}. |
| 90040103 | TablePermissionCreateIsMissing | Nimate dovoljenja za ustvarjanje entitete {0}. |
| 90040104 | TablePermissionDeleteIsMissing | Nimate dovoljenja za izbris entitete {0). |
| 90040105 | TablePermissionAppendIsMissngDuringAssociationChange | Nimate dovoljenja za pridružitev tabele {0} na {1} ali preklic pridružitve. |
| 90040106 | TablePermissionAppendToIsMissingDuringAssociationChange | Nimate dovoljenja za pridružitev tabele {1} na {0} ali preklic pridružitve |
| 90040107 | HttpAntiForgeryException | Žeton piškotkov proti ponarejanju in žeton polja obrazca se ne ujemata. |
| 90040109 | MissingPortalSessionCookie | Neveljaven žeton seje je bil poslan v načinu vrnitve. |
| 9004010C | ResourceDoesNotExists | Vira za segment »{0}« ni mogoče najti. |
| 9004010D | CDSError | Prišlo je do napake CDS. |
Odgovor na neobdelane napake s kodo stanja HTTP 500 bo vrnil napako »Med obdelavo zahteve je prišlo do nepričakovane napake«.
Glejte tudi
Pregled spletnega API-ja za portalePortali pišejo, posodabljajo in brišejo operacije z uporabo spletnega API-jaPortali berejo operacije s spletnim API-jem
Opomba
Ali nam lahko poveste, kateri je vaš prednostni jezik za dokumentacijo? Izpolnite kratko anketo. (upoštevajte, da je v angleščini)
Z anketo boste porabili približno sedem minut. Ne zbiramo nobenih osebnih podatkov (izjava o zasebnosti).
Povratne informacije
Pošlji in prikaži povratne informacije za