Skrive HTTP-forespørsler og behandle feil for portalenes web-API
Obs!
Fra og med 12. oktober 2022 er Power Apps-portaler Power Pages. Mer informasjon: Microsoft Power Pages er nå tilgjengelig (blogg)
Vi overfører og slår snart sammen Power Apps-portaldokumentasjonen med Power Pages-dokumentasjonen.
Samhandling med Web-API-en omfatter å skrive HTTP-forespørsler med nødvendige hoder og håndtering av HTTP-svar, inkludert eventuelle feil.
Viktig
- Portalversjonen må være 9.3.3.x eller senere for at denne funksjonen skal fungere.
URL-adresse til Web API og versjonskontroll
Konstruere URL-adressen for Web-API-en ved hjelp av formatet i tabellen nedenfor.
Del | Bekrivelse |
---|---|
Protokoll | https:// |
Primær nettadresse | <portal URL> |
Web API-bane | _api |
Ressurs | Logisk navn på tabellen du vil bruke |
Bruk for eksempel dette formatet når du refererer til en sak:
https://contoso.powerappsportals.com/_api/case
Alle web-API-ressurser følger de respektive portaltabelltillatelsene i sammenheng med webroller.
HTTP-metoder
HTTP-forespørsler kan bruke ulike typer metoder. Portal-Web-API-en støtter imidlertid bare metodene i tabellen nedenfor:
Method | Bruk |
---|---|
Hent | Brukes ved henting av data fra tabeller. |
Post | Bruk ved oppretting av oppføringer. |
Oppdatering | Brukes når tabeller oppdateres eller utføres i upsert-operasjoner. |
Delete | Brukes ved sletting av oppføringer eller individuelle feltverdier for oppføringer. |
Put | Bruk i begrensede situasjoner for å oppdatere individuelle oppføringsfelt. |
HTTP-topptekster
Web-API-en støtter bare JSON. Hver HTTP-overskrift må inneholde følgende:
- En Godta-overskriftsverdi for application/json, selv når ingen svartekst forventes.
- Hvis forespørselen inkluderer JSON-data i brødteksten for forespørselen, må du inkludere et Content-Type-hode med verdien
application/json
.
Den gjeldende OData-versjonen er 4.0, men fremtidige versjoner kan tillates for nye funksjoner. Bruk følgende syntaks for å sikre at det ikke er tvetydighet om OData-versjonen som skal brukes på koden i fremtiden:
Syntaks
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Eksempel: Wrapper AJAX-funksjon for CSRF-tokenet
(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)
Eksempel: Hente tabelldata
webapi.safeAjax({
type: "GET",
url: "/_api/contacts?$select=firstname,lastname",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Eksempel: Opprette tabelldata
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"))
}
});
Eksempel: Oppdatere tabelldata
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);
}
});
Eksempel: Slette tabelldata
webapi.safeAjax({
type: "DELETE",
url: "/_api/accounts(00000000-0000-0000-0000-000000000001)",
contentType: "application/json",
success: function (res) {
console.log(res);
}
});
Identifisere statuskoder
Hvert svar på HTTP-forespørselen inkluderer en statuskode. Statuskoder som returneres av nett-API for portaler, omfatter følgende:
Kode | Description | Type |
---|---|---|
200 OK | Forvent dette svaret når operasjonen vil returnere data i svarteksten. | Lyktes |
204 Uten innhold | Forvent dette svaret når operasjonen lykkes, men ikke returnerer data i svarteksten. | Lyktes |
403 Ikke tillatt | Forvent dette svaret for følgende typer feil:
|
Klientfeil |
401 Uautorisert | Forvent dette svaret for følgende typer feil:
|
Klientfeil |
413 Nyttelast er for stor | Forvent dette svaret når forespørselslengden er for stor. | Klientfeil |
400 BadRequest | Forvent dette svaret når et argument er ugyldig. InvalidAttribute |
Klientfeil |
404 Ikke funnet | Forvent dette svaret når ressursen ikke finnes. Tabellen vises ikke for web-API-en. |
Klientfeil |
405 Metode ikke tillatt | Denne feilen oppstår for feil metode- og ressurskombinasjoner. Du kan for eksempel ikke bruke DELETE eller PATCH på en tabellsamling. Denne situasjonen kan skje for følgende typer feil:
|
Klientfeil |
501 Ikke implementert | Forvent dette svaret når en forespurt operasjon ikke er implementert. | Serverfeil |
503 Tjenesten er utilgjengelig | Forvent dette svaret når Web-API-tjenesten ikke er tilgjengelig. | Serverfeil |
Analysere feil fra svaret
Vurder følgende HTTP-eksempelsvar som fremdeles inneholder den indre feilen:
{
"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.."
}
}
}
Feilkoder
Feilkoder vises i heksadesimal format for alle behandlede scenarier. Følgende tabell viser hver feilkode med det respektive navnet og den tilhørende meldingen.
Feilkode | Navn på feil | Feilmelding |
---|---|---|
900400FF | NoAttributesForTableCreate | Ingen attributter for handlingen Opprett tabell. |
90040100 | InvalidAttribute | Attributtet {0} ble ikke funnet for tabellen {1}. |
90040101 | AttributePermissionIsMissing | Attributtet {0} i tabellen {1} er ikke aktivert for Web-API. |
90040102 | TablePermissionWriteIsMissingDuringUpdate | Du har ikke tillatelse til å oppdatere en {0}-enhet. |
90040103 | TablePermissionCreateIsMissing | Du har ikke tillatelse til å opprette en {0}-enhet. |
90040104 | TablePermissionDeleteIsMissing | Du har ikke tillatelse til å slette {0)-enhet. |
90040105 | TablePermissionAppendIsMissngDuringAssociationChange | Du har ikke tillatelse til å knytte tabellen til eller oppheve tilknytningen av tabellen {0} med {1}. |
90040106 | TablePermissionAppendToIsMissingDuringAssociationChange | Du har ikke tillatelse til å knytte tabellen til eller oppheve tilknytningen av tabellen {1} til {0} |
90040107 | HttpAntiForgeryException | Tokenet for informasjonskapselen for å motvirke forfalskning og token for skjemafelt samsvarer ikke. |
90040109 | MissingPortalSessionCookie | Et ugyldig øktstoken ble sendt til den utløsende metoden. |
9004010C | ResourceDoesNotExists | Finner ikke ressurs for segmentet {0}. |
9004010D | CDSError | Det oppstod en CDS-feil. |
Svar for ubehandlede feil ved hjelp av HTTP-statuskode 500, returnerer feilen – Det oppstod en uventet feil under behandling av forespørselen.
Se også
Oversikt over nett-API for portaler
Portaler skriver, oppdatere og sletter operasjoner ved hjelp av Web-API
Leseoperasjoner for portaler ved hjelp av web-API
Obs!
Kan du fortelle oss om språkinnstillingene for dokumentasjonen? Ta en kort undersøkelse. (vær oppmerksom på at denne undersøkelsen er på engelsk)
Undersøkelsen tar rundt sju minutter. Det blir ikke samlet inn noen personopplysninger (personvernerklæring).
Tilbakemeldinger
https://aka.ms/ContentUserFeedback.
Kommer snart: Gjennom 2024 faser vi ut GitHub Issues som tilbakemeldingsmekanisme for innhold, og erstatter det med et nytt system for tilbakemeldinger. Hvis du vil ha mer informasjon, kan du se:Send inn og vis tilbakemelding for